Axy's Mods
axysmodswiki
https://axysmods.miraheze.org/wiki/Main_Page
MediaWiki 1.41.0
first-letter
Media
Special
Talk
User
User talk
Axy's Mods
Axy's Mods talk
File
File talk
MediaWiki
MediaWiki talk
Template
Template talk
Help
Help talk
Category
Category talk
Module
Module talk
Template:Msgbox
10
8
14
2014-09-11T05:20:36Z
crafting>Dinoguy1000
0
Dinoguy1000 moved page [[Template:Msgbox]] to [[Template:Message box]]: I hate trying to find this thing
wikitext
text/x-wiki
#REDIRECT [[Template:Message box]]
550ef94482acd3efb0653a46fc6971b056de2c40
15
14
2024-04-28T15:47:51Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
#REDIRECT [[Template:Message box]]
550ef94482acd3efb0653a46fc6971b056de2c40
Template:Crafting Table
10
2
2
2015-08-20T11:41:51Z
crafting>Majr
0
wikitext
text/x-wiki
<includeonly>{{#invoke: UI | craftingTable }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwiki on the documentation page -->
</noinclude>
ea578c66263b2c2237298c38a63695ce769d41c0
3
2
2024-04-28T15:47:49Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke: UI | craftingTable }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwiki on the documentation page -->
</noinclude>
ea578c66263b2c2237298c38a63695ce769d41c0
Module:ProcessArgs
828
4
6
2020-04-04T18:59:08Z
crafting>Sonicwave
0
removed redundant check per suggestion on talk page
Scribunto
text/plain
local p = {}
function p.norm( origArgs )
if type( origArgs ) ~= 'table' then
origArgs = mw.getCurrentFrame():getParent().args
end
local args = {}
for k, v in pairs( origArgs ) do
v = mw.text.trim( tostring( v ) )
if v ~= '' then
args[k] = v
end
end
return args
end
function p.merge( origArgs, parentArgs, norm )
if type( origArgs ) ~= 'table' then
norm = origArgs
local f = mw.getCurrentFrame()
origArgs = f.args
parentArgs = f:getParent().args
end
local args = {}
for k, v in pairs( origArgs ) do
v = mw.text.trim( tostring( v ) )
if not norm or v ~= '' then
args[k] = v
end
end
for k, v in pairs( parentArgs ) do
v = mw.text.trim( v )
if not norm or v ~= '' then
args[k] = v
end
end
return args
end
return p
8180d2e595306ec42c5e45b8c6a4185a33c56a7c
7
6
2024-04-28T15:47:50Z
Axxyyy
2
1 revision imported
Scribunto
text/plain
local p = {}
function p.norm( origArgs )
if type( origArgs ) ~= 'table' then
origArgs = mw.getCurrentFrame():getParent().args
end
local args = {}
for k, v in pairs( origArgs ) do
v = mw.text.trim( tostring( v ) )
if v ~= '' then
args[k] = v
end
end
return args
end
function p.merge( origArgs, parentArgs, norm )
if type( origArgs ) ~= 'table' then
norm = origArgs
local f = mw.getCurrentFrame()
origArgs = f.args
parentArgs = f:getParent().args
end
local args = {}
for k, v in pairs( origArgs ) do
v = mw.text.trim( tostring( v ) )
if not norm or v ~= '' then
args[k] = v
end
end
for k, v in pairs( parentArgs ) do
v = mw.text.trim( v )
if not norm or v ~= '' then
args[k] = v
end
end
return args
end
return p
8180d2e595306ec42c5e45b8c6a4185a33c56a7c
Template:Tl
10
16
30
2020-04-18T14:57:07Z
crafting>Madminecrafter12
0
"Redundant move protection" is not a valid reason (see my previous edit summaries)
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
fb9a6b420e13178e581af6e7d64274cd30a79017
Template:CfF Community Board Seats/en
10
56
98
2021-03-04T19:13:05Z
Translation-category>FuzzyBot
0
Updating to match new version of source page
wikitext
text/x-wiki
<languages/>
Pages related to [[Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Community Board seats|the 2021 call for feedback about community seats]] in the Board of Trustees of Wikimedia Foundation.
{{#if:{{#translation:}}|[[Category:CfF Community Board Seats/Translations|{{#translation:}}]]}}
[[Category:Wikimedia Foundation Board of Trustees{{#translation:}}]]
9b9f881d7e406778a4a1d41dc975e333ff2dc925
Template:TranslateThis
10
53
92
2021-04-15T18:00:12Z
Translation-category>MusikBot II
0
Protected "[[Template:TranslateThis]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only autoconfirmed users] (indefinite))
wikitext
text/x-wiki
<includeonly>{{#invoke:TranslateThis|main}}</includeonly><noinclude>{{documentation}}</noinclude>
ec67859e2d049878c88308d50739380e842ceb87
Template:Translation category/doc
10
54
94
2021-04-25T21:30:59Z
Translation-category>Pols12
0
Created page with "{{Documentation subpage}} <!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata --> == {{int Usage}} == Should be included alone on /Trans..."
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata -->
== {{int Usage}} ==
Should be included alone on /Translations subpage of each translatable category.
If Category:Foo has been [[Meta:Internationalization guidelines|internationalized with Translate syntax]], Category:Foo/Translations should only contain {{tlx|Translation category}}.
== Purpose ==
Placed at ''Category:Foo/Translations'', this template will:
* Display a language bar to navigate to translations (Category:Foo/en, Category:Foo/pt, …).
* Display Category:Foo description.
* Categorize inside ''/Translations'' subcategory of each category in which Category:Foo is categorized (i.e. if Category:Foo is categorized in Category:Bar, Category:Foo/Translations will be categorized in Category:Bar/Translations).
* Categorize inside ''Category:Foo'', indexed as “/Translations” (<code><nowiki>[[Category:Foo|/Translations]]}}</nowiki></code>).
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Internationalization templates]]
}}</includeonly>
1f8927c0cf99d11ce8f95176ae5177ca082f503a
Template:Languages/Lang
10
48
82
2021-06-06T23:25:21Z
Translation-category>Agilight
0
wikitext
text/x-wiki
{{#if: {{{1|}}}
| {{#if: {{#if: {{{all|}}}
| 1
| {{#ifexist: {{#if: {{{2|}}}
| {{{2|}}}
| {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}}
}}/{{{1|}}}
| 1
}}
}}
| '''·''' <span lang="{{#if:{{{name|}}}|en|{{BCP47|{{Uselang}}}}}}" title="{{{name|{{#language:{{{1|}}}|{{Uselang}}}}}}} ({{{1}}})"><bdi lang="{{BCP47|{{{1}}}}}" dir="{{Dir|{{{1}}}}}" class="plainlinks autonym" style="white-space:nowrap">{{#ifeq: {{#if: {{{2|}}}
| {{{2|}}}
| {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}}
}}/{{{1|}}} | {{FULLPAGENAME}}
| [[:{{FULLPAGENAME}}|{{{autonym|{{#language:{{{1|}}}}}}}}]]<!-- selflink -->
| [{{FULLURL:{{#if: {{{2|}}}
| {{{2|}}}
| {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}}
}}/{{{1|}}}|uselang={{{1|}}}}} {{{autonym|{{#language:{{{1|}}}}}}}}]<!-- real link, set interface to be in the language of the page -->
}}</bdi></span>
}}
}}<noinclude>{{Documentation}}</noinclude>
844f59be1b2e87d8921f28439ccadfaffe35a6e6
Template:IsDocSubpage
10
50
86
2021-07-05T18:00:40Z
Translation-category>MusikBot II
0
Protected "[[Template:IsDocSubpage]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
<onlyinclude><includeonly>{{#ifexpr: (
{{#ifeq:{{lc:{{SUBPAGENAME}}}}|{{lc:{{{override|doc}}}}}|1|0}} or (
{{#ifeq:{{lc:{{#titleparts:{{FULLPAGENAME}}|-1|-2}}}}|{{lc:{{{override|doc}}}}}|1|0}}
and {{#if:{{#invoke:Template translation|getLanguageSubpage}}|1|0}}
)
)<!--
-->|{{{true|1}}}<!--
-->|{{{false|}}}<!--
-->}}</includeonly></onlyinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! -->
e60f69b26953d441bf5b76229c9222f16c042ae6
Template:Documentation
10
17
32
2021-07-11T22:31:05Z
crafting>ItsPlantseed
0
wikitext
text/x-wiki
<includeonly>{{#invoke: documentation | page }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwikis on the documentation page -->
</noinclude>
c461cd371bd48a195ce5385c361e8f7e71be1463
62
32
2021-10-29T20:00:52Z
Translation-category>GeneralNotability
0
1 revision imported from [[:w:Template:Documentation]]: blame [[User:Barkeep49]]
wikitext
text/x-wiki
{{#invoke:Documentation|main}}
bb08b6773a4c1e1d528cefda2d7c305d8b5193ec
Template:Template link
10
15
28
2021-08-17T20:22:17Z
crafting>Humiebee
0
Undo revision 2009980 by [[Special:Contributions/Humiebee|Humiebee]] ([[User talk:Humiebee|talk]]) unfortunatly breaks with colons
wikitext
text/x-wiki
<includeonly>{{#if:{{yesno|{{{code|yes}}}}}|<code>}}{{{{#if: {{{subst|}}}|[[WP:SUBSTITUTION|subst]]: }}[[{{#if: {{#pos: {{{1}}} | : }} || Template: }}{{{1}}}|{{ #ifeq: {{NAMESPACE:{{{1}}}}} | Template | {{PAGENAME:{{{1}}}}} | {{{1}}} }}]]{{ #if: {{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{2|}}} }}{{ #if: {{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{3|}}} }}{{ #if: {{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{4|}}} }}{{ #if: {{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{5|}}} }}{{ #if: {{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{6|}}} }}{{ #if: {{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{7|}}} }}{{ #if: {{{8|}}}{{{9|}}} | {{!}}{{{8|}}} }}{{ #if: {{{9|}}} | {{!}}{{{9|}}} }}}}{{#if:{{yesno|{{{code|yes}}}}}|</code>}}{{#if: {{#pos: {{{1}}} | File: }}{{#pos: {{{1}}} | Category: }} | [[Category:Fixme]] }}</includeonly><noinclude>
<!-- categories/interwikis on the /doc subpage, not here -->
{{Documentation}}
</noinclude>
42669227d2179e342a03b8be8115ada28536e13b
Template:Message box
10
7
12
2021-08-19T14:48:36Z
crafting>AttemptToCallNil
0
sync with sandbox
wikitext
text/x-wiki
<includeonly><div
class="msgbox {{#if: {{{mini|{{{small|}}}}}} | msgbox-mini | }} {{
#switch: {{{type|}}}
| style | display | presentation = msgbox-yellow
| minor | minor-issue | content | issue = msgbox-orange
| major | major-issue | delete = msgbox-red
| organization | title | move = msgbox-purple
| details | parity | edition | upcoming = msgbox-blue
| notice | note | info = msgbox-green
| other = msgbox-magenta
| #default = {{#if: {{#pos: {{{class|}}} | msgbox- <!-- end pos -->}} || msgbox-gray <!-- end if -->}}
}} {{{class|}}}"
style="
{{#if: {{{bgcol|}}} | background: {{{bgcol}}}; | }}
{{#if: {{{linecol|}}} | border-left: 4px solid {{{linecol}}}; | }}
max-width: {{{width|{{#if: {{{mini|{{{small|}}}}}} | 50em | 90% }}}}};
{{#if: {{{float|}}} | float: {{{float}}}; | }}
{{{css|}}}
"
>
<div id="msgbox-icon"> {{
#if: {{{icon|}}}
| <div id="msgbox-iconimage" style="{{{imagecss|}}}">
}}{{
#if: {{{image|}}}{{{imagetextbefore|}}}{{{imagetextafter|}}}
| <div id="msgbox-image" class="nomobile" style="{{{imagecss|}}}">
}} {{{imagetextbefore|}}}{{
#if: {{{icon|}}}
| {{CommentSprite | {{{icon|}}} }}
}}{{
#if:{{{image|}}}
|{{
#if: {{{imageisraw|}}}
| {{{image}}}
| [[File:{{{image}}}|{{#if: {{{imagesize|}}}| {{{imagesize}}}| {{#if: {{{mini|{{{small|}}}}}} | 16px | 32px }}}}|text-top]]
}}}}{{{imagetextafter|}}}{{
#if: {{{icon|}}}
| </div>
}}{{
#if: {{{image|}}}{{{imagetextbefore|}}}{{{imagetextafter|}}}
| </div>
}}
</div>
<div style="width: 100%;">{{
#if: {{{title|}}}
| '''{{{title}}}''' {{
#if: {{{discuss|}}}{{{discussPage|}}}{{{discussAnchor|}}}
| <sup>[<nowiki/>{{direct link|{{
#if: {{{discussPage|}}}
| {{{discussPage}}}
| {{TALKPAGENAME}}
}}{{
#if: {{{discussAnchor|}}}
| #{{{discussAnchor}}}
}}|discuss}}</sup>
}}
}}{{
#if: {{{linkshere|}}}
| {{#if:{{{discuss|}}}|<sup>, [[Special:WhatLinksHere/{{FULLPAGENAME}}|links]]<nowiki/>]</sup>|<sup>[<nowiki/>[[Special:WhatLinksHere/{{FULLPAGENAME}}|links]]<nowiki/>]</sup>}}
| {{
#if:{{{discuss|}}}
|<sup>]</sup>
}}
}}
{{
#if: {{{text|}}}
| <div id="msgbox-text">{{{text}}}</div>
}}
</div>
</div></includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwikis on the documentation page -->
</noinclude>
a021d981ece5c9defc74eac0c3e9eba688dd4683
13
12
2024-04-28T15:47:51Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly><div
class="msgbox {{#if: {{{mini|{{{small|}}}}}} | msgbox-mini | }} {{
#switch: {{{type|}}}
| style | display | presentation = msgbox-yellow
| minor | minor-issue | content | issue = msgbox-orange
| major | major-issue | delete = msgbox-red
| organization | title | move = msgbox-purple
| details | parity | edition | upcoming = msgbox-blue
| notice | note | info = msgbox-green
| other = msgbox-magenta
| #default = {{#if: {{#pos: {{{class|}}} | msgbox- <!-- end pos -->}} || msgbox-gray <!-- end if -->}}
}} {{{class|}}}"
style="
{{#if: {{{bgcol|}}} | background: {{{bgcol}}}; | }}
{{#if: {{{linecol|}}} | border-left: 4px solid {{{linecol}}}; | }}
max-width: {{{width|{{#if: {{{mini|{{{small|}}}}}} | 50em | 90% }}}}};
{{#if: {{{float|}}} | float: {{{float}}}; | }}
{{{css|}}}
"
>
<div id="msgbox-icon"> {{
#if: {{{icon|}}}
| <div id="msgbox-iconimage" style="{{{imagecss|}}}">
}}{{
#if: {{{image|}}}{{{imagetextbefore|}}}{{{imagetextafter|}}}
| <div id="msgbox-image" class="nomobile" style="{{{imagecss|}}}">
}} {{{imagetextbefore|}}}{{
#if: {{{icon|}}}
| {{CommentSprite | {{{icon|}}} }}
}}{{
#if:{{{image|}}}
|{{
#if: {{{imageisraw|}}}
| {{{image}}}
| [[File:{{{image}}}|{{#if: {{{imagesize|}}}| {{{imagesize}}}| {{#if: {{{mini|{{{small|}}}}}} | 16px | 32px }}}}|text-top]]
}}}}{{{imagetextafter|}}}{{
#if: {{{icon|}}}
| </div>
}}{{
#if: {{{image|}}}{{{imagetextbefore|}}}{{{imagetextafter|}}}
| </div>
}}
</div>
<div style="width: 100%;">{{
#if: {{{title|}}}
| '''{{{title}}}''' {{
#if: {{{discuss|}}}{{{discussPage|}}}{{{discussAnchor|}}}
| <sup>[<nowiki/>{{direct link|{{
#if: {{{discussPage|}}}
| {{{discussPage}}}
| {{TALKPAGENAME}}
}}{{
#if: {{{discussAnchor|}}}
| #{{{discussAnchor}}}
}}|discuss}}</sup>
}}
}}{{
#if: {{{linkshere|}}}
| {{#if:{{{discuss|}}}|<sup>, [[Special:WhatLinksHere/{{FULLPAGENAME}}|links]]<nowiki/>]</sup>|<sup>[<nowiki/>[[Special:WhatLinksHere/{{FULLPAGENAME}}|links]]<nowiki/>]</sup>}}
| {{
#if:{{{discuss|}}}
|<sup>]</sup>
}}
}}
{{
#if: {{{text|}}}
| <div id="msgbox-text">{{{text}}}</div>
}}
</div>
</div></includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwikis on the documentation page -->
</noinclude>
a021d981ece5c9defc74eac0c3e9eba688dd4683
Template:BCP47
10
44
74
2021-08-23T18:00:36Z
Translation-category>MusikBot II
0
Changed protection settings for "[[Template:BCP47]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
{{#switch:{{lc:{{{1|}}}}}
<!-- pseudo codes -->
||root|default|i-default=<!-- empty language tag means unknown per the HTML spec --><!-- or ={{int:lang}}? (the best user default), or =en? (the default "ContentLanguage" for unlocalized data on Meta) -->
<!-- current BCP47 violations by Wikimedia sites, which can be fixed using standard tags when they exist -->
|als=gsw
|bat-smg=sgs
|de-formal=de<!-- could be "de-x-formal", but actually a subset within standard "de" for HTML/XML -->
|eml=egl<!-- retired code, the de facto eml.wikipedia uses Emilian, not Romagnol -->
|fiu-vro=vro
|mo=ro-cyrl<!-- retired, best fit on Wikimedia sites, but no longer working in interwikis (Wikipedia project deleted) -->
|nl-informal=nl<!-- could be "nl-x-informal", but actually a subset within standard "nl" for HTML/XML -->
|nrm=nrf<!-- Wikimedia sites uses "nrm" to mean Norman, but standard "nrm" is an unrelated language. The "nrf" code is now standardized for Norman (previously used a private-use extension of French "fr-x-nrm") -->
|roa-rup=rup
|simple=en<!-- could be "en-simple" but actually a subset within standard "en" for HTML -->
|sr-ec=sr-cyrl
|sr-el=sr-latn
|zh-classical=lzh
<!-- other current BCP47 violations by Wikimedia sites, fixed using private-use extensions (if they are needed, labels are limited to 8 letters/digits) -->
|cbk-zam=cbk-x-zam
|map-bms=jv-x-bms
|roa-tara=it-x-tara
|tokipona|tp=x-tokipona
<!-- conforming BCP47 "private-use" extensions used by Wikimedia, which are no longer needed, and improved using now standard codes -->
|be-x-old=be-tarask
<!-- conforming but ambiguous BCP47 codes used by Wikimedia in a more restrictive way, with more precision -->
|arc=syc<!-- The de-facto arc.wikipedia.org, as per their community request, is in actual using Syriac which is coded as syc -->
|no=nb<!-- "no" means Bokmål on Wikimedia sites, "nb" is not used -->
|bh=bho<!-- "bh"="bih" is a language family, interpreted in Wikimedia as the single language "bho", even if its interwiki code remains bh) -->
|tgl=tl-tglg<!-- "tgl" on Wikimedia is the historic variant of the Tagalog macrolanguage ("tl" or "tgl", "tl" recommended for BCP47), written in the Baybayin script ("tglg") -->
<!-- conforming BCP47 "inherited" tags, strongly discouraged and replaced by their recommended tags (complete list that should not be augmented now) -->
|art-lojban=jbo<!-- still used in some old Wikimedia templates -->
|en-gb-oed=en-gb<!-- no preferred replacement, could be "en-gb-x-oed" but actually a subset within standard "en-gb" -->
|i-ami=ami
|i-bnn=bnn
|i-hak=hak
|i-klingon=tlh
|i-lux=lb
|i-navajo=nv
|i-pwn=pwn
|i-tao=tao
|i-tay=tay
|i-tsu=tstu
|no-bok=nb<!-- still used in some old Wikimedia templates -->
|no-nyn=nn<!-- still used in some old Wikimedia templates -->
|sgn-be-fr=sfb
|sgn-be-nl=vgt
|sgn-ch-de=sgg
|zh-guoyu=cmn<!-- this could be an alias of "zh" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin -->
|zh-hakka=hak
|zh-min=zh-tw<!-- no preferred replacement, could be "zh-x-min", but actually a subset within standard "zh-tw"; not necessarily "nan" -->
|zh-min-nan=nan<!-- used in some old Wikimedia templates and in interwikis -->
|zh-xiang=hsn
<!-- conforming BCP47 "redundant" tags, discouraged and replaced by their recommended tags (complete list that should not be augmented now) -->
|sgn-br=bzs
|sgn-co=csn
|sgn-de=gsg
|sgn-dk=dsl
|sgn-es=ssp
|sgn-fr=fsl<!-- still used in some old Wikimedia templates -->
|sgn-gb=bfi
|sgn-gr=gss
|sgn-ie=isg
|sgn-it=ise
|sgn-jp=jsl
|sgn-mx=mfs
|sgn-ni=ncs
|sgn-nl=dse
|sgn-no=nsl
|sgn-pt=psr
|sgn-se=swl
|sgn-us=ase<!-- still used in some old Wikimedia templates -->
|sgn-za=sfs
|zh-cmn=cmn<!-- still used in some old Wikimedia templates, this could be an alias of "zh" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin -->
|zh-cmn-Hans=cmn-hans<!-- still used in some old Wikimedia templates, this could be an alias of "zh-hans" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin -->
|zh-cmn-Hant=cmn-hant<!-- still used in some old Wikimedia templates, this could be an alias of "zh-hant" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin -->
|zh-gan=gan<!-- still used in some old Wikimedia templates -->
|zh-wuu=wuu<!-- still used in some old Wikimedia templates -->
|zh-yue=yue<!-- still used in some old Wikimedia templates and in interwikis -->
<!-- other "inherited" tags of the standard, strongly discouraged as they are deleted, but with no defined replacement there are left unaffected (complete list that should not be augmented now)-->
|cel-gaulish=xtg<!--ambiguous, most often "xtg" for Transalpine Gaulish in today's France, may also be "xcg" for Cisalpine Gaulish in today's Northern Italy-->
|i-enochian=x-enochian?
|i-mingo=x-mingo?
<!-- other standard "redundant" tags, which were unnecessarily registered (they validate with standard subtags) and that are left unaffected (complete list that should not be augmented now)
|az-arab
|az-cyrl
|az-latn
|be-latn
|bs-cyrl
|bs-latn
|de-1901
|de-1996
|de-at-1901
|de-at-1996
|de-ch-1901
|de-ch-1996
|de-de-1901
|de-de-1996
|en-boont
|en-scouse
|iu-cans
|iu-latn
|mn-cyrl
|mn-mong
|sl-nedis
|sl-rozaj
|sr-cyrl
|sr-latn
|tg-arab
|tg-cyrl
|uz-cyrl
|uz-latn
|yi-latn
|zh-hans
|zh-hans-cn
|zh-hans-hk
|zh-hans-mo
|zh-hans-sg
|zh-hans-tw
|zh-hant
|zh-hant-cn
|zh-hant-hk
|zh-hant-mo
|zh-hant-sg
|zh-hant-tw
--- standard special codes
|mul
|und
--- all other unaffected tags:
Minimal check of validity (valid BCP47 codes are necessarily stable over URLENCODE and #titleparts).
The check ensures that the code contains only ASCII letters, digits or hyphens, and starts by a letter.
This check is necessary to avoid a severe bug in MediaWiki, with some values of parameter 1, notably with
urlencoded characters (including quotes, braces, ampersands...), slashes, or any HTML or wiki formatting
(see also [[Template:CURRENTCONTENTLANGUAGE]]). If successful, force result to lowercase; otherwise
return an empty language tag.
-->
|#default =
{{#ifeq: {{#titleparts:{{{1|}}}|1}} | {{#titleparts:{{{1|}}}||-1}}
| {{#ifeq: {{lc:{{#titleparts:{{{1|}}}|1}}}} | {{ucfirst:{{lc:{{#titleparts:{{{1|}}}|1}}}}}}
|
| {{#ifeq: {{{1|}}} | {{urlencode:{{{1|}}}}}
| {{lc:{{{1|}}}}}
}}
}}
}}
}}<noinclude>{{Documentation}}</noinclude>
c8d624bc6118b4a7d84d16636cf616ce4c2df56f
Template:Uselang
10
41
68
2021-08-23T18:00:53Z
Translation-category>MusikBot II
0
Changed protection settings for "[[Template:Uselang]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
{{#ifeq:{{Int:Lang}}|⧼Lang⧽|en|{{Int:Lang}}}}<noinclude>{{Doc}}</noinclude>
cdb7e5da66ac1deb7310bf422b52c99913388742
Template:UI see also
10
21
40
2021-09-03T20:31:57Z
crafting>Fadyblok240
0
wikitext
text/x-wiki
* {{tl|Crafting Table}}
* {{tl|Inventory Table}}
* {{tl|Furnace}}
* {{tl|Brewing Stand}}
* {{tl|Stonecutter}}
* {{tl|Loom}}
* {{tl|Grindstone}}
* {{tl|Hotbar}}
* {{tl|Inventory}}
* {{tl|Inventory slot}}
* [[Module:UI]]<noinclude>
{{Documentation}}
<!-- Put categories/interwiki on the documentation page -->
</noinclude>
f7bc713ef11da21be62732d6a243da2412173562
Template:Str left
10
43
72
2022-01-01T18:01:16Z
Translation-category>MusikBot II
0
Changed protection settings for "[[Template:Str left]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
<includeonly>{{ {{{|safesubst:}}}padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
9c0bdb76d3fd64ecd8af888df4ec235e5aec0b33
Template:Documentation/styles.css
10
40
66
2022-01-16T18:41:11Z
Translation-category>MarcoAurelio
0
Per IRC, this should return things back to normal
text
text/plain
/* {{PP-template}} */
.ts-doc-sandbox .mbox-image {
padding:.75em 0 .75em .75em;
}
.ts-doc-doc {
clear: both;
background-color: #ecfcf4;
border: 1px solid #a2a9b1;
margin-top: 1em;
padding: 5px;
}
.ts-doc-header {
padding-bottom: 3px;
border-bottom: 1px solid #a2a9b1;
margin-bottom: 1ex;
}
.ts-doc-header .ts-tlinks-tlinks {
display: inline-block;
line-height: 24px;
margin-left: 1em;
}
.ts-doc-header .ts-tlinks-tlinks a.external {
color: #0645ad;
}
.ts-doc-header .ts-tlinks-tlinks a.external:visited {
color: #0b0080;
}
.ts-doc-header .ts-tlinks-tlinks a.external:active {
color: #faa700;
}
.ts-doc-content:after {
content: '';
clear: both;
display: block;
}
.ts-doc-heading {
display: inline-block;
padding-left: 55px;
background: center left/50px no-repeat;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png);
background-image: url(https://upload.wikimedia.org/wikipedia/commons/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg);
font-size: 1.5em;
}
.ts-doc-content > *:first-child,
.ts-doc-footer > *:first-child {
margin-top: .5em;
}
.ts-doc-content > *:last-child,
.ts-doc-footer > *:last-child {
margin-bottom: .5em;
}
.ts-doc-footer {
background-color: #ecfcf4;
border: 1px solid #a2a9b1;
padding: .25em 1em;
margin-top: .2em;
font-style: italic;
}
.ts-doc-footer small {
font-style: normal;
}
.ts-doc-sandbox {
clear: both;
}
c37b0ddfd0b1c128c187ca56721d1c4e481b05ff
Template:Documentation subpage
10
49
84
2022-10-12T16:54:07Z
Translation-category>GVarnum-WMF
0
{{#translation:}}
wikitext
text/x-wiki
<includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:Edit-copy green.svg|40px|link=]]
|text='''This is a [[Help:Template documentation|documentation]] [[mw:Help:Subpages|subpage]] for {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> It contains usage information, [[Categorization|categories]], and other content that is not part of the original<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} template page
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} page
| article
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
a5300bf1d640c82dada9be2a2b099a0d7b76f123
Template:Sandbox other
10
51
88
2022-10-28T18:01:31Z
Translation-category>MusikBot II
0
Protected "[[Template:Sandbox other]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only autoconfirmed users] (indefinite))
wikitext
text/x-wiki
<!--
-->{{#if:<!--
-->{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}<!--
-->|sandbox<!--
-->|1<!--
-->}}<!--
-->{{#ifeq:{{SUBPAGENAME}}|doc<!--
-->|1<!--
-->}}<!--
-->{{#invoke:String|match<!--
-->|{{PAGENAME}}<!--
-->|/sandbox/styles.css$<!--
-->|plain = false<!--
-->|nomatch = <!--
-->}}<!--
-->|{{{1|}}}<!--
-->|{{{2|}}}<!--
-->}}<!--
--><noinclude>
{{documentation}}
</noinclude>
10ab2a8619ffe82e75daf68783e80852419e186a
Template:Dir
10
42
70
2022-11-03T09:12:23Z
Translation-category>Billinghurst
0
+ks-arab per [[special:diff/24008946]]
wikitext
text/x-wiki
{{#switch:{{#if:{{{1|}}}|{{{1|}}}|{{Uselang}}}}|ar|arc|ary|arz|azb|bcc|bgn|ckb|bqi|dv|fa|fa-af|glk|ha-arab|he|kk-arab|kk-cn|ks|ks-arab|ku-arab|ms-arab|mzn|pnb|prd|ps|sd|ug|ur|ydd|yi={{{2|rtl}}}|{{{3|ltr}}}}}<noinclude>{{Documentation}}</noinclude>
a65308984923226784ec1a65932f60f03cde075c
Template:CfF Community Board Seats
10
55
96
2023-01-28T10:42:00Z
Translation-category>Minorax
0
tvar update
wikitext
text/x-wiki
<languages/>
<translate>
<!--T:1-->
Pages related to [[<tvar name="1">Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Community Board seats</tvar>|the 2021 call for feedback about community seats]] in the Board of Trustees of Wikimedia Foundation.
</translate>
{{#if:{{#translation:}}|[[Category:CfF Community Board Seats/Translations|{{#translation:}}]]}}
[[Category:Wikimedia Foundation Board of Trustees{{#translation:}}]]
2ec7de376b07fd269d635bb215a499a1fed5c578
Template:FileUrlStyle
10
6
10
2023-02-22T12:34:48Z
crafting>OishiiOnIno
0
per update request
wikitext
text/x-wiki
<includeonly>{{ #ifexist: File:{{PAGENAME:{{{2}}}}} }}{{ #widget: FileUrlStyle | class = {{{1}}} | url = {{ #urldecode: {{ #sub: {{filepath: {{#titleparts: {{PAGENAME:{{{2}}}}}}} | {{{3|}}} }} | {{ #len: {{ #explode: {{filepath: Wiki.png}} | b/bc/ }} }} }} }}{{#if: {{{query|}}} | &{{{query}}} }}&format=original }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwiki on the documentation page -->
</noinclude>
91024151befa6ac8a7718412f525637ea51aaf3a
11
10
2024-04-28T15:47:51Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{ #ifexist: File:{{PAGENAME:{{{2}}}}} }}{{ #widget: FileUrlStyle | class = {{{1}}} | url = {{ #urldecode: {{ #sub: {{filepath: {{#titleparts: {{PAGENAME:{{{2}}}}}}} | {{{3|}}} }} | {{ #len: {{ #explode: {{filepath: Wiki.png}} | b/bc/ }} }} }} }}{{#if: {{{query|}}} | &{{{query}}} }}&format=original }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwiki on the documentation page -->
</noinclude>
91024151befa6ac8a7718412f525637ea51aaf3a
Template:Tlx
10
39
64
2023-02-24T14:49:03Z
Translation-category>Xaosflux
0
missing :
wikitext
text/x-wiki
{{#if:{{{plain|}}}||<code>}}{{[[{{#if:{{{SISTER|}}}|{{{SISTER}}}:Template|Special:MyLanguage/{{ns:Template}}}}:{{{1|Tlx}}}|{{{1|Tlx}}}]]<!--
-->{{#if:{{{2|}}}||{{{2}}}}}<!--
-->{{#if:{{{3|}}}||{{{3}}}}}<!--
-->{{#if:{{{4|}}}||{{{4}}}}}<!--
-->{{#if:{{{5|}}}||{{{5}}}}}<!--
-->{{#if:{{{6|}}}||{{{6}}}}}<!--
-->{{#if:{{{7|}}}||{{{7}}}}}<!--
-->{{#if:{{{8|}}}||''...''}}}}{{#if:{{{plain|}}}||</code>}}<noinclude>
{{documentation}}
</noinclude>
f2cb8c0397aa726f8314df231cfe853f25cab851
Template:Crafting Table/doc
10
22
42
2023-03-17T07:05:22Z
crafting>Mykytius
0
wikitext
text/x-wiki
{{documentation header}}
{{lua|UI}}
This template is used to create an interface that looks similar to the [[Crafting Table|Crafting Table's]].
See [[Template:Inventory slot]] for basic usage, this documentation page will cover additional or different functions.
Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead.
__TOC__
== Usage ==
<pre style="max-width: 250px">{{Crafting Table
|A1= |B1= |C1=
|A2= |B2= Oak Wood Planks |C2=
|A3= |B3= Oak Wood Planks |C3=
|Output= Stick,4
}}</pre>
;produces:
{{Crafting Table
|A1= |B1= |C1=
|A2= |B2= Oak Wood Planks |C2=
|A3= |B3= Oak Wood Planks |C3=
|Output= Stick,4
}}
=== Shapeless ===
If a recipe is shapeless, add shapeless=1 to the template, which will display an icon which when hovered over explains what a shapeless recipe is.
<pre style="max-width: 236px">{{Crafting Table
|shapeless= 1
|A1= |B1= Blaze Powder |C1=
|A2= |B2= Coal,Charcoal |C2=
|A3= |B3= Gunpowder |C3=
|Output= Fire Charge,3
}}</pre>
;produces:
{{Crafting Table
|shapeless= 1
|A1= |B1= Blaze Powder |C1=
|A2= |B2= Coal,Charcoal |C2=
|A3= |B3= Gunpowder |C3=
|Output= Fire Charge,3
}}
The shapeless parameter does not support animation, so shapeless and non-shapeless recipes cannot be combined.
=== Fixed ===
If a recipe is fixed, add fixed=1 to the template, which will display an icon which when hovered over explains what a fixed recipe is. The <code>notfixed</code> parameter can also be set to specify exceptions.
<pre style="max-width: 31em">{{Crafting Table
|fixed= 1
|notfixed= the banner
|B2= Banner
|A3= Lapis Lazuli |B3= Lapis Lazuli |C3= Lapis Lazuli
|Output= Blue Base Banner
}}</pre>
;produces:
{{Crafting Table
|fixed= 1
|notfixed= the banner
|B2= Banner
|A3= Lapis Lazuli |B3= Lapis Lazuli |C3= Lapis Lazuli
|Output= Blue Base Banner
}}
The fixed parameter does not support animation, so fixed, shapeless and normal recipes cannot be combined.
=== Animated ===
To make the slots animate, you make a list of blocks and objects you want to show, separated by semi-colons.
<pre style="max-width: 616px">{{Crafting Table
|A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli
|A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli
|A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli
|Output= Lapis Lazuli,9; Lapis Lazuli Block
}}</pre>
;produces:
{{Crafting Table
|A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli
|A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli
|A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli
|Output= Lapis Lazuli,9; Lapis Lazuli Block
}}
<pre style="max-width: 602px">{{Crafting Table
|A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block; Block of Netherite
}}</pre>
;produces:
{{Crafting Table
|A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block; Block of Netherite
}}
=== Mods ===
Mod images and normal images can be combined just like in a single slot. However, this usage is not recommended, as [https://ftb.gamepedia.com/Feed_The_Beast_Wiki:Minecraft_Wiki_exportation_project mod pages are currently being transferred to the FTB Wiki].
<!--
When uploading mod images, they must have the mod page name in parenthesis at the end. For example Fancystone (FancyPack).
The Mod parameter can be used to set a default used for all parameters, this is best used when all items in the crafting table are modded items, or if the mod name is long and using the vanilla (v) parameter for the vanilla items in the table would be quicker.
<pre style="max-width: 848px">{{Crafting Table
|A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust
|A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit
|A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone
|Output= IndustrialCraft:Advanced Circuit,2
}}</pre>
;or
<pre style="max-width: 656px">{{Crafting Table
|Mod= IndustrialCraft
|A1= v:Redstone Dust |B1= Cable |C1= vanilla:Glowstone Dust
|A2= Electronic Circuit |B2= V:Lapis Lazuli Block |C2= Electronic Circuit
|A3= Vanilla:Glowstone Dust |B3= Cable |C3= v:Redstone Dust
|Output= Advanced Circuit,2
}}</pre>
;produces:
{{Crafting Table
|A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust
|A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit
|A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone
|Output= IndustrialCraft:Advanced Circuit,2
}}
Note the links of the vanilla Minecraft items, compared to the IndustrialCraft items.
Animation is fully supported between mod and vanilla items.
-->
== See also ==
{{UI see also}}
<includeonly>
[[Category:Inventory templates]]
[[Category:Image templates]]
[[de:Vorlage:Grid/Crafting Table]]
[[es:Plantilla:Mesa de trabajo]]
[[fr:Modèle:Grille/Établi]]
[[it:Template:Grid/Crafting Table]]
[[ja:テンプレート:Crafting Table]]
[[ko:틀:Crafting Table]]
[[nl:Template:Grid/Crafting Table]]
[[pl:Szablon:Grid/Crafting Table]]
[[pt:Predefinição:Bancada de trabalho]]
[[ru:Шаблон:Верстак]]
[[uk:Шаблон:Верстак]]
[[zh:Template:Crafting Table]]
</includeonly>
<noinclude>
[[de:Vorlage:Grid/Crafting Table/doc]]
[[es:Plantilla:Mesa de trabajo/doc]]
[[fr:Modèle:Grille/Établi/doc]]
[[ja:テンプレート:Crafting Table/doc]]
[[ko:틀:Crafting Table/doc]]
[[nl:Template:Grid/Crafting Table/doc]]
[[pl:Szablon:Grid/Crafting Table/doc]]
[[pt:Predefinição:Bancada de trabalho/doc]]
[[ru:Шаблон:Верстак/док]]
[[uk:Шаблон:Верстак/док]]
[[zh:Template:Crafting Table/doc]]
</noinclude>
1f97eaff4bbd7dd9511988b592fb9360e879a2cb
Module:Documentation
828
19
36
2023-04-18T10:45:00Z
crafting>Number 3434
0
Scribunto
text/plain
local p = {}
local defaultDocPage = 'doc'
local getType = function( namespace, page )
local pageType = 'template'
if namespace == 'Module' then
pageType = 'module'
elseif namespace == 'Widget' then
pageType = 'widget'
elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.css$' ) then
pageType = 'stylesheet'
elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.js$' ) then
pageType = 'script'
elseif namespace == 'MediaWiki' then
pageType = 'message'
end
return pageType
end
-- Creating a documentation page or transclusion through {{subst:docc}}
function p.create( f )
local args = require( 'Module:ProcessArgs' ).norm()
local page = mw.title.getCurrentTitle()
local docPage = args.page or page.nsText .. ':' .. page.baseText .. '/' .. defaultDocPage
local out
if not args.content and tostring( page ) == docPage then
out = f:preprocess( '{{subst:Template:Documentation/preload}}' )
else
local templateArgs = {}
for _, key in ipairs{ 'type', 'page', 'content' } do
local val = args[key]
if val then
if key == 'content' then val = '\n' .. val .. '\n' end
table.insert( templateArgs, key .. '=' .. val )
end
end
out = '{{documentation|' .. table.concat( templateArgs, '|' ) .. '}}'
out = out:gsub( '|}}', '}}' )
if not args.content then
out = out .. '\n<!-- Put categories/interwikis on the documentation page -->'
end
end
if not mw.isSubsting() then
out = f:preprocess( out )
if not args.nocat then
out = out .. '[[Category:Pages with templates requiring substitution]]'
end
end
return out
end
-- Header on the documentation page
function p.docPage( f )
local args = require( 'Module:ProcessArgs' ).merge( true )
local badDoc = args.baddoc
if f:callParserFunction( '#dplvar', '$doc noheader' ) == '1' then
if badDoc then
f:callParserFunction( '#dplvar:set', '$doc bad', '1' )
end
return
end
local page = mw.title.getCurrentTitle()
local subpage = page.subpageText
if subpage == 'sandbox' or subpage == 'testcases' then
page = page.basePageTitle
end
local namespace = page.nsText
local pageType = mw.ustring.lower( args.type or getType( namespace, page ) )
local body = mw.html.create( 'div' ):addClass( 'documentation-header' )
body
:addClass( badDoc and 'documentation-badDoc' or '' )
:css{
['margin-bottom'] = '0.8em',
padding = '0.8em 1em 0.7em',
['background-color'] = '#' .. ( badDoc and '888888' or '33333333' ),
border = '1px solid #AAA'
}
:tag( 'div' )
:attr( 'id', 'documentation-header-tools' )
:css( 'float', 'right' )
:wikitext( '[[', page:fullUrl( 'action=purge' ), ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']]' )
:done()
:wikitext(
'This is the documentation page. It ',
pageType == 'module' and 'will' or 'should',
' be transcluded into the main ', pageType, ' page. ',
'See [[Template:Documentation]] for more information'
)
if badDoc then
body:wikitext( "<br>'''This ", pageType, "'s documentation needs improving or additional information.'''" )
end
if not ( args.nocat or namespace == 'User' ) then
body:wikitext( '[[Category:Documentation pages]]' )
end
return body
end
-- Wrapper around the documentation on the main page
function p.page( f )
-- mw.text.trim uses mw.ustring.gsub, which silently fails on large strings
local function trim( s )
return (s:gsub( '^[\t\r\n\f ]+', '' ):gsub( '[\t\r\n\f ]+$', '' ))
--return string.gsub( s, '^[\t\r\n\f ]*(.-)[\t\r\n\f ]*$', '%1' )
end
local args = require( 'Module:ProcessArgs' ).merge( true )
local page = mw.title.getCurrentTitle()
local subpage = page.subpageText
if subpage == 'sandbox' or subpage == 'testcases' then
page = page.basePageTitle
end
local namespace = page.nsText
local docText = trim( args.content or '' )
if docText == '' then docText = nil end
local docPage
local noDoc
if docText then
docPage = page
else
docPage = mw.title.new( args.page or namespace .. ':' .. page.text .. '/' .. defaultDocPage )
noDoc = args.nodoc or not docPage.exists
end
local badDoc = args.baddoc
local pageType = mw.ustring.lower( args.type or getType( namespace, page ) )
if not docText and not noDoc then
f:callParserFunction( '#dplvar:set', '$doc noheader', '1' )
docText = trim( f:expandTemplate{ title = ':' .. docPage.fullText } )
if f:callParserFunction( '#dplvar', '$doc bad' ) == '1' then
badDoc = 1
end
if docText == '' then
docText = nil
noDoc = 1
end
end
if docText then
docText = '\n' .. docText .. '\n'
end
local action = f:preprocess('{{lc:{{int:edit}}}}')
local preload = ''
local docClass = ''
local colour = '00000000'
local message
local category
if noDoc then
action = f:preprocess('{{lc:{{int:create}}}}')
preload = '&preload=Template:Documentation/preload'
docClass = 'documentation-noDoc'
colour = '33333333'
message = "'''This " .. pageType .. " has no documentation. " ..
"If you know how to use this " .. pageType .. ", please create it.'''"
if not ( args.nocat or namespace == 'User' ) then
category = pageType .. 's with no documentation'
if not mw.title.new( 'Category:' .. category ).exists then
category = 'Pages with no documentation'
end
end
elseif badDoc then
docClass = 'documentation-badDoc'
colour = 'F9F2EA'
message = "'''This " .. pageType .. "'s documentation needs improving or additional information.'''\n"
if not ( args.nocat or namespace == 'User' ) then
category = pageType .. 's with bad documentation'
if not mw.title.new( 'Category:' .. category ).exists then
category = 'Pages with bad documentation'
end
end
end
local links = {
'[' .. docPage:fullUrl( 'action=edit' .. preload ) .. ' ' .. action .. ']',
'[' .. docPage:fullUrl( 'action=history' ) .. ' ' .. f:preprocess('{{lc:{{int:history short}}}}') .. ']',
'[' .. page:fullUrl( 'action=purge' ) .. ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']'
}
if not noDoc and page ~= docPage then
table.insert( links, 1, '[[' .. docPage.fullText .. '|' .. f:preprocess('{{lc:{{int:view}}}}') .. ']]' )
end
links = mw.html.create( 'span' )
:attr( 'id', 'documentation-header-tools' )
:css( 'float', 'right' )
:wikitext( mw.text.nowiki( '[' ), table.concat( links, ' | ' ), mw.text.nowiki( ']' ) )
local body = mw.html.create( 'div' ):addClass( 'documentation' )
body
:addClass( docClass )
:css{
['background-color'] = '#' .. colour,
border = '1px solid #AAA',
padding = '0.8em 1em 0.7em',
['margin-top'] = '1em',
clear = 'both'
}
local header = mw.html.create( 'div' )
:addClass( 'documentation-header-top' )
:css{
margin = '-0.8em -1em 0.8em',
padding = '0.8em 1em 0.7em',
['background-color'] = '#33333333',
['border-bottom'] = 'inherit'
}
header
:node( links )
:tag( 'span' )
:attr( 'id', 'documentation-header-title' )
:css{
['font-weight'] = 'bold',
['font-size'] = '130%',
['margin-right'] = '1em',
['line-height'] = '1'
}
:wikitext( 'Documentation' )
local codePages = {
module = true,
stylesheet = true,
script = true,
}
if not noDoc and codePages[pageType] then
header
:tag( 'span' )
:attr( 'id', 'documentation-jump-to-code' )
:css( 'white-space', 'nowrap' )
:wikitext( '[[#the-code|Jump to code ↴]]' )
end
body
:node( header ):done()
:wikitext( message )
:wikitext( docText )
if not noDoc and page ~= docPage then
body
:tag( 'div' )
:addClass( 'documentation-header-bottom' )
:css{
margin = '0.7em -1em -0.7em',
['background-color'] = '#33333333',
['border-top'] = 'inherit',
padding = '0.8em 1em 0.7em',
clear = 'both'
}
:node( links )
:wikitext( 'The above documentation is transcluded from [[', docPage.fullText, ']].' )
end
local anchor = ''
if not noDoc and pageType ~= 'template' and pageType ~= 'message' then
anchor = mw.html.create( 'div' ):attr( 'id', 'the-code' )
end
return tostring( body ) .. tostring( anchor )
end
return p
21bd039aea338542482dbf80b92e8ebf5465f0c3
Module:Inventory slot
828
11
20
2023-06-29T16:26:31Z
crafting>Magiczocker
0
Revert edits by [[Special:Contributions/Magiczocker|Magiczocker]] ([[User talk:Magiczocker|talk]])
Scribunto
text/plain
local p = {}
local i18n = {
filename = 'Invicon $1',
legacyFilename = 'Grid $1.png',
modLink = 'Mods/$1/$2',
moduleAliases = [[Module:Inventory slot/Aliases]],
moduleInvData = [[Module:InvSprite]],
moduleModData = 'Module:InvSprite/Mods/$1',
moduleRandom = [[Module:Random]],
moduleSprite = [[Module:Sprite]],
-- List of special prefixes which should be handled by
-- other modules (such as being moved outside links)
prefixes = {
any = 'Any',
matching = 'Matching',
damaged = 'Damaged',
},
suffixes = {
be = 'BE',
lce = 'LCE',
},
templateFileUrl = 'FileUrl',
}
p.i18n = i18n
local random = require( i18n.moduleRandom ).random
local sprite = require( i18n.moduleSprite ).sprite
local aliases = mw.loadData( i18n.moduleAliases )
local ids = mw.loadData( i18n.moduleInvData ).ids
local modIds = {}
local pageName = mw.title.getCurrentTitle().text
-- Performs a simple recursive clone of a table's values
local function cloneTable( origTable )
local newTable = {}
for k, v in pairs( origTable ) do
if type( v ) == 'table' then
v = cloneTable( v )
end
newTable[k] = v
end
return newTable
end
--[[Merges a list, or inserts a string
or table into a table
--]]
local function mergeList( parentTable, content )
local i = #parentTable + 1
if content[1] then
-- Merge list into table
for _, v in ipairs( content ) do
parentTable[i] = v
i = i + 1
end
else
-- Add strings or tables to table
parentTable[i] = content
end
end
-- Creates the HTML for an item
local function makeItem( frame, i, args )
local item = mw.html.create( 'span' ):addClass( 'invslot-item' )
if args.imgclass then
item:addClass( args.imgclass )
end
if frame.name == '' then
return item
end
local category
local title = frame.title or mw.text.trim( args.title or '' )
local mod = frame.mod
local name = frame.name or ''
local num = frame.num
local description = frame.text
local img, idData
if mod then
local modData = modIds[mod]
if not modData and mw.title.new( i18n.moduleModData:gsub( '%$1', mod ) ).exists then
modData = mw.loadData( i18n.moduleModData:gsub( '%$1', mod ) )
modIds[mod] = modData
end
if modData and modData[name] then
idData = modData[name]
else
img = i18n.legacyFilename:gsub( '%$1', name .. ' (' .. mod .. ')' )
end
elseif ids[name] then
idData = ids[name]
elseif name:match( '\.gif$' ) or name:match( '\.png$' ) then
img = i18n.filename:gsub( '%$1', name )
-- Remove file extension from name
name = name:sub( 0, -5 )
end
local link = args.link or ''
if link == '' then
if mod then
link = i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name )
else
link = name:gsub( '^' .. i18n.prefixes.damaged .. ' ', '' )
for _, suffix in pairs( i18n.suffixes ) do
link = link:gsub( ' ' .. suffix .. '$', '' )
end
end
elseif link:lower() == 'none' then
link = nil
end
if link == pageName then
link = nil
end
local formattedTitle
local plainTitle
if title == '' then
plainTitle = name
elseif title:lower() ~= 'none' then
plainTitle = title:gsub( '\\\\', '\' ):gsub( '\\&', '&' )
local formatPattern = '&[0-9a-fk-or]'
if plainTitle:match( formatPattern ) then
formattedTitle = title
plainTitle = plainTitle:gsub( formatPattern, '' )
end
if plainTitle == '' then
plainTitle = name
else
plainTitle = plainTitle:gsub( '\', '\\' ):gsub( '&', '&' )
end
elseif link then
if img then
formattedTitle = ''
else
plainTitle = ''
end
end
item:attr{
['data-minetip-title'] = formattedTitle,
['data-minetip-text'] = description
}
if img then
-- & is re-escaped because mw.html treats attributes
-- as plain text, but MediaWiki doesn't
local escapedTitle = ( plainTitle or '' ):gsub( '&', '&' )
item:addClass( 'invslot-item-image' )
:wikitext( '[[File:', img, '|32x32px|link=', link or '', '|', escapedTitle, ']]' )
else
local image
if mod then
image = args.spritesheet or mod .. 'Sprite.png'
end
if link then
item:wikitext( '[[', link, '|' )
end
local image, spriteCat = sprite{
iddata = idData, title = plainTitle,
image = image, data = 'InvSprite',
nourl = args.nourl,
}
item:node( image )
category = spriteCat
end
if num and num > 1 and num < 1000 then
if img and link then
item:wikitext( '[[', link, '|' )
end
local number = item
:tag( 'span' )
:addClass( 'invslot-stacksize' )
:attr{ title = plainTitle }
:wikitext( num )
if numStyle then
number:cssText( numStyle )
end
if img and link then
item:wikitext( ']]' )
end
end
if not img and link then
item:wikitext( ']]' )
end
item:wikitext( category )
return item
end
-- Main entry point
function p.slot( f )
local args = f.args or f
if f == mw.getCurrentFrame() and args[1] == nil then
args = f:getParent().args
end
if not args.parsed then
args[1] = mw.text.trim( args[1] or '' )
end
local modData = {
aliases = args.modaliases or '',
default = args.mod
}
if modData.aliases ~= '' then
modData.aliases = mw.loadData( 'Module:' .. modData.aliases )
else
modData.aliases = nil
end
if args.mod == '' then
modData.default = nil
end
local frames
if args.parsed then
frames = args[1]
elseif args[1] ~= '' then
local randomise = args.class == 'invslot-large' and 'never' or nil
frames = p.parseFrameText( args[1], randomise, false, modData )
end
local animated = frames and #frames > 1
local imgClass = args.imgclass
local numStyle = args.numstyle
local body = mw.html.create( 'span' ):addClass( 'invslot' ):css{ ['vertical-align'] = args.align }
if animated then
body:addClass( 'animated' )
end
if args.class then
body:addClass( args.class )
end
if args.style then
body:cssText( args.style )
end
if ( args.default or '' ) ~= '' then
body:css( 'background-image', f:expandTemplate{ title = i18n.templateFileUrl, args = { args.default .. '.png' } } )
end
--mw.logObject( frames )
if not frames then
return tostring( body )
end
local activeFrame = frames.randomise == true and random( #frames ) or 1
for i, frame in ipairs( frames ) do
local item
-- Table is a list, must contain subframes
if frame[1] then
item = body:tag( 'span' ):addClass( 'animated-subframe' )
local subActiveFrame = frame.randomise and random( #frame ) or 1
for sI, sFrame in ipairs( frame ) do
local sItem = makeItem( sFrame, sI, args )
item:node( sItem )
if sI == subActiveFrame then
sItem:addClass( 'animated-active' )
end
end
else
item = makeItem( frame, i, args )
body:node( item )
end
if i == activeFrame and animated then
item:addClass( 'animated-active' )
end
end
return tostring( body )
end
--[[Parses the frame text into a table of frames and subframes,
expanding aliases (and optionally retaining a reference), and
deciding if the slot can be randomised
--]]
function p.parseFrameText( framesText, randomise, aliasReference, modData )
local frames = { randomise = randomise }
local subframes = {}
local subframe
local expandedAliases
local splitFrames = mw.text.split( mw.text.trim( framesText ), '%s*;%s*' )
for _, frameText in ipairs( splitFrames ) do
frameText = frameText:gsub( '^%s*{%s*', function()
subframe = true
return ''
end )
if subframe then
frameText = frameText:gsub( '%s*}%s*$', function()
subframe = 'last'
return ''
end )
end
local frame = p.makeFrame( frameText, modData and modData.default )
local newFrame = frame
if aliases or modData.aliases then
local id = frame.name
if frame.mod then
id = frame.mod .. ':' .. id
end
local alias = modData and modData.aliases and modData.aliases[id] or
aliases and aliases[id]
if alias then
newFrame = p.getAlias( alias, frame )
if aliasReference then
local curFrame = #frames + 1
local aliasData = { frame = frame, length = #newFrame }
if subframe then
if not subframes.aliasReference then
subframes.aliasReference = {}
end
subframes.aliasReference[#subframes + 1] = aliasData
else
if not expandedAliases then
expandedAliases = {}
end
expandedAliases[curFrame] = aliasData
end
end
end
end
if subframe then
mergeList( subframes, newFrame )
-- Randomise starting frame for "Any *" aliases, as long as the alias is the only subframe
if frames.randomise ~= 'never' and subframes.randomise == nil and
frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then
subframes.randomise = true
else
subframes.randomise = false
end
if frames.randomise ~= 'never' then
frames.randomise = false
end
if subframe == 'last' then
-- No point having a subframe containing a single frame,
-- or the subframe being the only frame
if #subframes == 1 or #splitFrames == i and #frames == 0 then
mergeList( frames, subframes )
else
table.insert( frames, subframes )
end
subframes = {}
subframe = nil
end
else
-- Randomise starting frame for "Any *" aliases, as long as the alias is the only frame
if frames.randomise == nil and frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then
frames.randomise = true
elseif frames.randomise ~= 'never' then
frames.randomise = false
end
mergeList( frames, newFrame )
end
end
frames.aliasReference = expandedAliases
return frames
end
--[[Returns a new table with the parts of the parent frame
added to the alias
--]]
function p.getAlias( aliasFrames, parentFrame )
-- If alias is just a name, return the parent frame with the new name
if type( aliasFrames ) == 'string' then
local expandedFrame = mw.clone( parentFrame )
expandedFrame.name = aliasFrames
return { expandedFrame }
end
-- Single frame alias, put in list
if aliasFrames.name then
aliasFrames = { aliasFrames }
end
local expandedFrames = {}
for i, aliasFrame in ipairs( aliasFrames ) do
local expandedFrame
if type( aliasFrame ) == 'string' then
expandedFrame = { name = aliasFrame }
else
expandedFrame = cloneTable( aliasFrame )
end
expandedFrame.title = parentFrame.title or expandedFrame.title
expandedFrame.mod = parentFrame.mod or expandedFrame.mod
expandedFrame.num = parentFrame.num or expandedFrame.num
expandedFrame.text = parentFrame.text or expandedFrame.text
expandedFrames[i] = expandedFrame
end
return expandedFrames
end
function p.expandAlias( parentFrame, alias )
return p.getAlias( alias, parentFrame )
end
function p.stringifyFrame( frame )
if not frame.name then
return ''
end
return string.format(
'[%s]%s:%s,%s[%s]',
frame.title or '',
frame.mod or 'Minecraft',
frame.name,
frame.num or '',
frame.text or ''
)
end
function p.stringifyFrames( frames )
for i, frame in ipairs( frames ) do
frames[i] = p.stringifyFrame( frame )
end
return table.concat( frames, ';' )
end
-- Splits up the frame text into its parts
function p.makeFrame( frameText, mod )
-- Simple frame with no parts
if not frameText:match( '[%[:,]' ) then
return {
mod = mod,
name = mw.text.trim( frameText ),
}
end
frameText = frameText:gsub( '%s*([%[%]:,;])%s*', '%1' )
local frame = {}
frame.title = frameText:match( '^%[([^%]]+)%]' )
frame.mod = frameText:match( '([^:%]]+):' ) or mod
local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 }
if frame.mod and vanilla[mw.ustring.lower( frame.mod )] or frame.mod == '' then
frame.mod = nil
end
local nameStart = ( frameText:find( ':' ) or frameText:find( '%]' ) or 0 ) + 1
if nameStart - 1 == #frameText then
nameStart = 1
end
frame.name = frameText:sub( nameStart, ( frameText:find( '[,%[]', nameStart ) or 0 ) - 1 )
frame.num = math.floor( frameText:match( ',(%d+)' ) or 0 )
if frame.num == 0 then
frame.num = nil
end
frame.text = frameText:match( '%[([^%]]+)%]$' )
return frame
end
function p.getParts( frameText, mod )
return p.makeFrame( frameText, mod )
end
return p
7a4753f23cf2769641694b0e726a6995a284f788
21
20
2024-04-28T15:47:53Z
Axxyyy
2
1 revision imported
Scribunto
text/plain
local p = {}
local i18n = {
filename = 'Invicon $1',
legacyFilename = 'Grid $1.png',
modLink = 'Mods/$1/$2',
moduleAliases = [[Module:Inventory slot/Aliases]],
moduleInvData = [[Module:InvSprite]],
moduleModData = 'Module:InvSprite/Mods/$1',
moduleRandom = [[Module:Random]],
moduleSprite = [[Module:Sprite]],
-- List of special prefixes which should be handled by
-- other modules (such as being moved outside links)
prefixes = {
any = 'Any',
matching = 'Matching',
damaged = 'Damaged',
},
suffixes = {
be = 'BE',
lce = 'LCE',
},
templateFileUrl = 'FileUrl',
}
p.i18n = i18n
local random = require( i18n.moduleRandom ).random
local sprite = require( i18n.moduleSprite ).sprite
local aliases = mw.loadData( i18n.moduleAliases )
local ids = mw.loadData( i18n.moduleInvData ).ids
local modIds = {}
local pageName = mw.title.getCurrentTitle().text
-- Performs a simple recursive clone of a table's values
local function cloneTable( origTable )
local newTable = {}
for k, v in pairs( origTable ) do
if type( v ) == 'table' then
v = cloneTable( v )
end
newTable[k] = v
end
return newTable
end
--[[Merges a list, or inserts a string
or table into a table
--]]
local function mergeList( parentTable, content )
local i = #parentTable + 1
if content[1] then
-- Merge list into table
for _, v in ipairs( content ) do
parentTable[i] = v
i = i + 1
end
else
-- Add strings or tables to table
parentTable[i] = content
end
end
-- Creates the HTML for an item
local function makeItem( frame, i, args )
local item = mw.html.create( 'span' ):addClass( 'invslot-item' )
if args.imgclass then
item:addClass( args.imgclass )
end
if frame.name == '' then
return item
end
local category
local title = frame.title or mw.text.trim( args.title or '' )
local mod = frame.mod
local name = frame.name or ''
local num = frame.num
local description = frame.text
local img, idData
if mod then
local modData = modIds[mod]
if not modData and mw.title.new( i18n.moduleModData:gsub( '%$1', mod ) ).exists then
modData = mw.loadData( i18n.moduleModData:gsub( '%$1', mod ) )
modIds[mod] = modData
end
if modData and modData[name] then
idData = modData[name]
else
img = i18n.legacyFilename:gsub( '%$1', name .. ' (' .. mod .. ')' )
end
elseif ids[name] then
idData = ids[name]
elseif name:match( '\.gif$' ) or name:match( '\.png$' ) then
img = i18n.filename:gsub( '%$1', name )
-- Remove file extension from name
name = name:sub( 0, -5 )
end
local link = args.link or ''
if link == '' then
if mod then
link = i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name )
else
link = name:gsub( '^' .. i18n.prefixes.damaged .. ' ', '' )
for _, suffix in pairs( i18n.suffixes ) do
link = link:gsub( ' ' .. suffix .. '$', '' )
end
end
elseif link:lower() == 'none' then
link = nil
end
if link == pageName then
link = nil
end
local formattedTitle
local plainTitle
if title == '' then
plainTitle = name
elseif title:lower() ~= 'none' then
plainTitle = title:gsub( '\\\\', '\' ):gsub( '\\&', '&' )
local formatPattern = '&[0-9a-fk-or]'
if plainTitle:match( formatPattern ) then
formattedTitle = title
plainTitle = plainTitle:gsub( formatPattern, '' )
end
if plainTitle == '' then
plainTitle = name
else
plainTitle = plainTitle:gsub( '\', '\\' ):gsub( '&', '&' )
end
elseif link then
if img then
formattedTitle = ''
else
plainTitle = ''
end
end
item:attr{
['data-minetip-title'] = formattedTitle,
['data-minetip-text'] = description
}
if img then
-- & is re-escaped because mw.html treats attributes
-- as plain text, but MediaWiki doesn't
local escapedTitle = ( plainTitle or '' ):gsub( '&', '&' )
item:addClass( 'invslot-item-image' )
:wikitext( '[[File:', img, '|32x32px|link=', link or '', '|', escapedTitle, ']]' )
else
local image
if mod then
image = args.spritesheet or mod .. 'Sprite.png'
end
if link then
item:wikitext( '[[', link, '|' )
end
local image, spriteCat = sprite{
iddata = idData, title = plainTitle,
image = image, data = 'InvSprite',
nourl = args.nourl,
}
item:node( image )
category = spriteCat
end
if num and num > 1 and num < 1000 then
if img and link then
item:wikitext( '[[', link, '|' )
end
local number = item
:tag( 'span' )
:addClass( 'invslot-stacksize' )
:attr{ title = plainTitle }
:wikitext( num )
if numStyle then
number:cssText( numStyle )
end
if img and link then
item:wikitext( ']]' )
end
end
if not img and link then
item:wikitext( ']]' )
end
item:wikitext( category )
return item
end
-- Main entry point
function p.slot( f )
local args = f.args or f
if f == mw.getCurrentFrame() and args[1] == nil then
args = f:getParent().args
end
if not args.parsed then
args[1] = mw.text.trim( args[1] or '' )
end
local modData = {
aliases = args.modaliases or '',
default = args.mod
}
if modData.aliases ~= '' then
modData.aliases = mw.loadData( 'Module:' .. modData.aliases )
else
modData.aliases = nil
end
if args.mod == '' then
modData.default = nil
end
local frames
if args.parsed then
frames = args[1]
elseif args[1] ~= '' then
local randomise = args.class == 'invslot-large' and 'never' or nil
frames = p.parseFrameText( args[1], randomise, false, modData )
end
local animated = frames and #frames > 1
local imgClass = args.imgclass
local numStyle = args.numstyle
local body = mw.html.create( 'span' ):addClass( 'invslot' ):css{ ['vertical-align'] = args.align }
if animated then
body:addClass( 'animated' )
end
if args.class then
body:addClass( args.class )
end
if args.style then
body:cssText( args.style )
end
if ( args.default or '' ) ~= '' then
body:css( 'background-image', f:expandTemplate{ title = i18n.templateFileUrl, args = { args.default .. '.png' } } )
end
--mw.logObject( frames )
if not frames then
return tostring( body )
end
local activeFrame = frames.randomise == true and random( #frames ) or 1
for i, frame in ipairs( frames ) do
local item
-- Table is a list, must contain subframes
if frame[1] then
item = body:tag( 'span' ):addClass( 'animated-subframe' )
local subActiveFrame = frame.randomise and random( #frame ) or 1
for sI, sFrame in ipairs( frame ) do
local sItem = makeItem( sFrame, sI, args )
item:node( sItem )
if sI == subActiveFrame then
sItem:addClass( 'animated-active' )
end
end
else
item = makeItem( frame, i, args )
body:node( item )
end
if i == activeFrame and animated then
item:addClass( 'animated-active' )
end
end
return tostring( body )
end
--[[Parses the frame text into a table of frames and subframes,
expanding aliases (and optionally retaining a reference), and
deciding if the slot can be randomised
--]]
function p.parseFrameText( framesText, randomise, aliasReference, modData )
local frames = { randomise = randomise }
local subframes = {}
local subframe
local expandedAliases
local splitFrames = mw.text.split( mw.text.trim( framesText ), '%s*;%s*' )
for _, frameText in ipairs( splitFrames ) do
frameText = frameText:gsub( '^%s*{%s*', function()
subframe = true
return ''
end )
if subframe then
frameText = frameText:gsub( '%s*}%s*$', function()
subframe = 'last'
return ''
end )
end
local frame = p.makeFrame( frameText, modData and modData.default )
local newFrame = frame
if aliases or modData.aliases then
local id = frame.name
if frame.mod then
id = frame.mod .. ':' .. id
end
local alias = modData and modData.aliases and modData.aliases[id] or
aliases and aliases[id]
if alias then
newFrame = p.getAlias( alias, frame )
if aliasReference then
local curFrame = #frames + 1
local aliasData = { frame = frame, length = #newFrame }
if subframe then
if not subframes.aliasReference then
subframes.aliasReference = {}
end
subframes.aliasReference[#subframes + 1] = aliasData
else
if not expandedAliases then
expandedAliases = {}
end
expandedAliases[curFrame] = aliasData
end
end
end
end
if subframe then
mergeList( subframes, newFrame )
-- Randomise starting frame for "Any *" aliases, as long as the alias is the only subframe
if frames.randomise ~= 'never' and subframes.randomise == nil and
frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then
subframes.randomise = true
else
subframes.randomise = false
end
if frames.randomise ~= 'never' then
frames.randomise = false
end
if subframe == 'last' then
-- No point having a subframe containing a single frame,
-- or the subframe being the only frame
if #subframes == 1 or #splitFrames == i and #frames == 0 then
mergeList( frames, subframes )
else
table.insert( frames, subframes )
end
subframes = {}
subframe = nil
end
else
-- Randomise starting frame for "Any *" aliases, as long as the alias is the only frame
if frames.randomise == nil and frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then
frames.randomise = true
elseif frames.randomise ~= 'never' then
frames.randomise = false
end
mergeList( frames, newFrame )
end
end
frames.aliasReference = expandedAliases
return frames
end
--[[Returns a new table with the parts of the parent frame
added to the alias
--]]
function p.getAlias( aliasFrames, parentFrame )
-- If alias is just a name, return the parent frame with the new name
if type( aliasFrames ) == 'string' then
local expandedFrame = mw.clone( parentFrame )
expandedFrame.name = aliasFrames
return { expandedFrame }
end
-- Single frame alias, put in list
if aliasFrames.name then
aliasFrames = { aliasFrames }
end
local expandedFrames = {}
for i, aliasFrame in ipairs( aliasFrames ) do
local expandedFrame
if type( aliasFrame ) == 'string' then
expandedFrame = { name = aliasFrame }
else
expandedFrame = cloneTable( aliasFrame )
end
expandedFrame.title = parentFrame.title or expandedFrame.title
expandedFrame.mod = parentFrame.mod or expandedFrame.mod
expandedFrame.num = parentFrame.num or expandedFrame.num
expandedFrame.text = parentFrame.text or expandedFrame.text
expandedFrames[i] = expandedFrame
end
return expandedFrames
end
function p.expandAlias( parentFrame, alias )
return p.getAlias( alias, parentFrame )
end
function p.stringifyFrame( frame )
if not frame.name then
return ''
end
return string.format(
'[%s]%s:%s,%s[%s]',
frame.title or '',
frame.mod or 'Minecraft',
frame.name,
frame.num or '',
frame.text or ''
)
end
function p.stringifyFrames( frames )
for i, frame in ipairs( frames ) do
frames[i] = p.stringifyFrame( frame )
end
return table.concat( frames, ';' )
end
-- Splits up the frame text into its parts
function p.makeFrame( frameText, mod )
-- Simple frame with no parts
if not frameText:match( '[%[:,]' ) then
return {
mod = mod,
name = mw.text.trim( frameText ),
}
end
frameText = frameText:gsub( '%s*([%[%]:,;])%s*', '%1' )
local frame = {}
frame.title = frameText:match( '^%[([^%]]+)%]' )
frame.mod = frameText:match( '([^:%]]+):' ) or mod
local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 }
if frame.mod and vanilla[mw.ustring.lower( frame.mod )] or frame.mod == '' then
frame.mod = nil
end
local nameStart = ( frameText:find( ':' ) or frameText:find( '%]' ) or 0 ) + 1
if nameStart - 1 == #frameText then
nameStart = 1
end
frame.name = frameText:sub( nameStart, ( frameText:find( '[,%[]', nameStart ) or 0 ) - 1 )
frame.num = math.floor( frameText:match( ',(%d+)' ) or 0 )
if frame.num == 0 then
frame.num = nil
end
frame.text = frameText:match( '%[([^%]]+)%]$' )
return frame
end
function p.getParts( frameText, mod )
return p.makeFrame( frameText, mod )
end
return p
7a4753f23cf2769641694b0e726a6995a284f788
Template:Int Usage
10
52
90
2023-08-13T20:45:42Z
Translation-category>שמזן
0
he translation
wikitext
text/x-wiki
{{TranslateThis|source = Template:Int Usage
|ha = Amfani
|sv = Användning
|ay = Apnaqaña
|kri = Aw fɔ yuz am
|bm = Baarakɛcogo
|lb = Benotzung
|ku = Bikaranîn
|da = Brug
|nb,nn,no = Bruk
|gd = Cleachdadh
|cy = Defnydd
|lg = Enkozesa
|eu = Erabilera
|sm = Fa’aoga
|mg = Fampiasana
|om = Fayyadama
|uz = Foydalanish
|af,li,nl,nl-be,nl-informal,vl,zea = Gebruik
|fy = Gebrûk
|hu = Használat
|bar = Heagnomma
|lus = Hman dan
|haw = Hoʻohana
|rw = Ikoreshwa
|so = Isticmaalka
|az = İstifadə
|ht = Itilizasyon
|gn = Jeporu rehegua
|et = Kasutamine
|fi = Käyttö
|hmn = Kev siv
|bs,cnr,hr,sh,sh-el,sh-latn,sr-el = Korištenje
|ln = Kosalela yango
|ny = Kugwiritsa ntchito
|diq = Kullanım|tr = Kullanım
|sn = Kushandiswa
|lt = Lietošana
|yo = Lilo
|ts = Matirhiselo
|sw = Matumizi
|lv = Naudojimas
|is = Notkun
|ig = Ojiji
|ceb,fil,tl = Paggamit
|su = Pamakéan
|ilo = Panagusar
|jv = Panggunaan
|id,ms = Penggunaan
|sk = Použitie
|cs = Používání
|ak,tw = Sɛnea wɔde di dwuma
|vi = Sử dụng
|st = Tšebeliso
|nso = Tšhomišo
|zu = Ukusetshenziswa
|xh = Ukusetyenziswa
|tk = Ulanylyşy
|sl = Uporaba
|en,en-au,en-ca,en-gb,en-ie,en-in,en-nz,en-us = Usage
|ga = Úsáid
|es,es-419,gl,pt,pt-br,pt-pt,qu = Uso
|co = Usu
|la = Ut uti
|fr,fr-be,fr-ca,fr-ch,fr-fr,fr-lu,frc = Utilisation
|ca = Utilització
|ro = Utilizare
|it = Utilizzo
|eo = Uzado
|mt = Użu
|pl = Użycie
|als,de,de-formal,de-at,de-ch,de-de,gsw = Verwendung
|mi = Whakamahinga
|ee = Zazã
|el = Χρήση|pnt = Χρήση
|be = Выкарыстанне
|be-tarask = Выкарыстаньне
|uk = Використання
|ru = Использование
|tg = Истифода
|kk = Қолданылуы
|ky = Колдонылышы
|tt = Куллану
|sh-cyrl,sh-ec,sr,sr-cyrl,sr-ec = Коришћење
|bg = Употреба|mk = Употреба
|mn = Хэрэглээ
|hy,hyw = օգտագործումը
|ka,xmf = გამოყენება
|as = ব্যৱহাৰ
|bn = ব্যবহার
|doi = प्रयोग करना
|bh,bho = प्रयोग के बारे में बतावल गइल बा
|hi,mai,ne = प्रयोग
|sa = प्रयोगः
|mr = वापर
|pa = ਵਰਤੋਂ
|or = ବ୍ୟବହାର
|ml = ഉപയോഗം
|gu = ઉપયોગ
|kn = ಬಳಕೆ
|ta = பயன்பாடு
|te = వాడుక
|si = භාවිතය
|my = အသုံးပြုပုံ
|th = การใช้งาน
|km = ការប្រើប្រាស់
|lo = ການນຳໃຊ້
|mni = ꯁꯤꯖꯤꯟꯅꯕꯥ
|am = አጠቃቀም
|ti = ኣጠቓቕማ
|ko = 사용법
|ja = 使い方<!--or 使用法-->
|yue,zh,zh-cn,zh-hans,zh-hant,zh-hk,zh-mo,zh-sg,zh-tw = 用法
|he = שימוש
|yi = באַניץ
|ar,ary,arz = استخدام
|sd,ur = استعمال
|uy = ئىشلىتىلىشى
|ckb = بەکارهێنان
|fa = کاربرد
|ps = کارول
|dv = ބޭނުން ކުރުމެވެ
}}<noinclude>{{doc}}</noinclude>
8daedbcbcd7444e04c6824104aa49074edba81d6
Template:Documentation header
10
18
34
2023-10-30T03:53:53Z
crafting>Noisy miner
0
Undo revision 2324252 by [[Special:Contributions/Tree apple tree|Tree apple tree]] ([[User talk:Tree apple tree|talk]])
wikitext
text/x-wiki
<includeonly>{{#invoke: documentation | docPage }}</includeonly><noinclude>
{{documentation|content=
Used on the top of a documentation page.
}}
[[Category:Documentation templates|*]]
[[tr:Şablon:Belgeleme üstbilgisi]]
[[zh:Template:Documentation header]]
fbfd2788ba2c707df1f24456c97112cb96e156fb
Template:Lua
10
20
38
2023-10-30T03:57:43Z
crafting>Noisy miner
0
wikitext
text/x-wiki
{{msgbox
| image = Lua logo.svg
| text = This {{#ifeq:{{NAMESPACENUMBER}}|828|module depends on|template uses}} '''<includeonly>[[</includeonly>Module:{{ucfirst: {{PAGENAME:{{{1|{{#ifeq:{{SUBPAGENAME}}|doc|{{BASEPAGENAME}}|{{PAGENAME}}}}}}}}} }}<includeonly>]]</includeonly>''', {{ #if: {{{data|}}} | with data stored in [[Module:{{ ucfirst: {{PAGENAME:{{{data}}}}} }}]]{{ #if: {{{data2|}}} |  and [[Module:{{ ucfirst: {{PAGENAME:{{{data2}}}}} }}]] }} | a script written in [[wp:Lua|Lua]] }}.<br>{{ #if: {{{data|}}} | These scripts are written in [[wp:Lua|Lua]]. }}
}}<includeonly>{{
#if: {{{nocat|}}}
|
| {{#switch: {{SUBPAGENAME}}
| doc | sandbox | testcases =
| {{#switch: {{NAMESPACENUMBER}}
| 0 | 10 = [[Category:Lua-based templates]]
}}
}}
}}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwikis on the documentation page -->
</noinclude>
1af47d4a3d4e04248e59e53d9a82bc8a35d14d51
Template:Yesno
10
9
16
2023-10-30T04:43:55Z
crafting>Legendary Super Saiyan Fennekin
0
[[w:help:Spam|Spam]]
wikitext
text/x-wiki
<includeonly>{{#switch: {{lc: {{{1|}}}}}
| y | yes | t | true | on | 1 = {{{yes|yes}}}
| n | no | f | false | off | 0 | = {{{no|}}}
|<!--blank--> = {{{blank|{{{no|}}} }}}
| #default = {{{yes|yes}}}
}}</includeonly><noinclude>{{documentation}}
<!-- Put categories/interwiki on the documentation page --></noinclude>
07b4704a9447160b114f23c05e8378b7aa0ade85
17
16
2024-04-28T15:47:52Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#switch: {{lc: {{{1|}}}}}
| y | yes | t | true | on | 1 = {{{yes|yes}}}
| n | no | f | false | off | 0 | = {{{no|}}}
|<!--blank--> = {{{blank|{{{no|}}} }}}
| #default = {{{yes|yes}}}
}}</includeonly><noinclude>{{documentation}}
<!-- Put categories/interwiki on the documentation page --></noinclude>
07b4704a9447160b114f23c05e8378b7aa0ade85
Module:Inventory slot/Aliases
828
12
22
2023-10-30T11:21:50Z
crafting>~aanzx
0
cleanup
Scribunto
text/plain
local coloredDyes = {
'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Yellow Dye', 'Lime Dye',
'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye',
'Blue Dye', 'Brown Dye', 'Green Dye',
'Red Dye', 'Black Dye',
}
local aliases = {
-- Common fuel types for furnace --
['Any fuel'] = { 'Coal', 'Charcoal', { title = 'Log', name = 'Oak Log' }, { title = 'Overworld Planks', name = 'Oak Planks' }, 'Block of Coal' },
['Any leather armor'] = { 'Leather Cap', 'Leather Tunic', 'Leather Pants', 'Leather Boots' },
['Any golden armor'] = { 'Golden Helmet', 'Golden Chestplate', 'Golden Leggings', 'Golden Boots' },
['Any chainmail armor'] = { 'Chainmail Helmet', 'Chainmail Chestplate', 'Chainmail Leggings', 'Chainmail Boots' },
['Any iron armor'] = { 'Iron Helmet', 'Iron Chestplate', 'Iron Leggings', 'Iron Boots' },
['Any diamond armor'] = { 'Diamond Helmet', 'Diamond Chestplate', 'Diamond Leggings', 'Diamond Boots' },
['Any netherite armor'] = { 'Netherite Helmet', 'Netherite Chestplate', 'Netherite Leggings', 'Netherite Boots' },
['Any Pottery Sherd'] = { 'Angler Pottery Sherd', 'Arms Up Pottery Sherd', 'Archer Pottery Sherd', 'Blade Pottery Sherd', 'Brewer Pottery Sherd', 'Burn Pottery Sherd', 'Danger Pottery Sherd', 'Explorer Pottery Sherd', 'Friend Pottery Sherd', 'Heart Pottery Sherd', 'Heartbreak Pottery Sherd', 'Howl Pottery Sherd', 'Miner Pottery Sherd', 'Mourner Pottery Sherd', 'Plenty Pottery Sherd', 'Prize Pottery Sherd', 'Sheaf Pottery Sherd', 'Shelter Pottery Sherd', 'Skull Pottery Sherd', 'Snort Pottery Sherd', 'Brick' },
-- stones --
['Any Cobblestone or Blackstone'] = { 'Cobblestone', 'Blackstone' },
['Any stone-tier block'] = { 'Cobblestone', 'Blackstone', 'Cobbled Deepslate' },
-- Display names --
['Broken Elytra'] = { title = '&eElytra', name = 'Broken Elytra' },
['Clay (block)'] = { title = 'Clay', name = 'Clay (block)' }, --remove on Nether Update's release if bedrock also changes the item name
['Clay (ball)'] = { title = 'Clay', name = 'Clay (ball)' }, --remove on Nether Update's release if bedrock also changes the item name
['Banner Pattern Flower'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
['Banner Pattern Flower Charge'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
['Banner Pattern Creeper Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
['Banner Pattern Creeper'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
['Banner Pattern Bordure Indented'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Bordure Indented'},
['Banner Pattern Field Masoned'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Field Masoned'},
['Banner Pattern Skull Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
['Banner Pattern Skull'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
['Banner Pattern Thing'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'},
['Banner Pattern Mojang'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'},
['Banner Pattern Globe'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Globe'},
['Banner Pattern Snout'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'},
['Banner Pattern Piglin'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'},
['Button'] = { title = 'Button', name = 'Stone Button'},
['Wooden Button'] = { title = 'Button', name = 'Oak Button'},
['Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Arrow Loaded Crossbow' },
['Damaged Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Arrow Loaded Crossbow' },
['Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Firework Loaded Crossbow' },
['Damaged Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Firework Loaded Crossbow' },
['Illager Banner'] = { title = '&6&oIllager Banner', name = 'Illager Banner', text =
'&7Cyan Lozenge/&7Light Gray Base/&7Gray Pale/&7Light Gray Bordure/&7Black Fess/&7Light Gray Per Fess'},
['Half Filled Bundle'] = { title = 'Bundle', name = 'Half Filled Bundle' },
['Filled Bundle'] = { title = 'Bundle', name = 'Filled Bundle' },
-- Weapons --
['Trident'] = { name = 'Trident', text = '/&7 When in main hand:/ &21.1 Attack Speed/ &29 Attack Damage'},
['Trident BE'] = { name = 'Trident', text = '/&9 +8 Attack Damage'},
-- Bedrock and Education Edition display names --
['Elytra Wings'] = { title = 'Elytra Wings', name = 'Elytra' },
['Cooked Beef'] = { title = 'Cooked Beef', name = 'Steak' },
['Map (no markers)'] = { title = 'Map', name = 'Map', text = 'Display Markers: &cNo' },
['Locator Map'] = { title = 'Map', name = 'Map', text = 'Display Markers: &aYes' },
-- Chemistry --
['Lead (element)'] = { title = 'Lead', name = 'Lead (element)' },
['Water (compound)'] = { title = 'Water', name = 'Water (compound)' },
['Chloride'] = { 'Calcium Chloride', 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' },
['Sparkler'] = { 'Orange Sparkler', 'Blue Sparkler', 'Red Sparkler', 'Purple Sparkler', 'Green Sparkler' },
['Matching Chloride'] = { 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' },
['Matching Colored Torch'] = { 'Blue Torch', 'Red Torch', 'Purple Torch', 'Green Torch' },
['Matching Glow Stick'] = { 'White Glow Stick', 'Orange Glow Stick', 'Magenta Glow Stick', 'Light Blue Glow Stick',
'Yellow Glow Stick', 'Lime Glow Stick', 'Pink Glow Stick', 'Gray Glow Stick', 'Cyan Glow Stick',
'Purple Glow Stick', 'Blue Glow Stick', 'Brown Glow Stick', 'Green Glow Stick', 'Red Glow Stick' },
}
-- Tooltip colors --
local yellowTooltips = {
'Creeper Head',
'Damaged Elytra',
'Dragon Head',
'Dragon\'s Breath',
'Elytra',
'Head',
'Heart of the Sea',
'Piglin Head',
'Player Head',
'Skeleton Skull',
'Totem of Undying',
'Wither Skeleton Skull',
'Zombie Head',
}
for _, name in ipairs( yellowTooltips ) do
aliases[name] = { title = '&e', name = name }
end
local aquaTooltips = {
'Beacon',
'Conduit',
'Golden Apple',
}
for _, name in ipairs( aquaTooltips ) do
aliases[name] = { title = '&b', name = name }
end
local lightPurpleTooltips = {
'Dragon Egg',
'Structure Block',
'Structure Void',
'Jigsaw Block',
'Barrier',
}
for _, name in ipairs( lightPurpleTooltips ) do
aliases[name] = { title = '&d', name = name }
end
local orangeItalicTooltips = {
'Ominous Banner',
}
for _, name in ipairs( orangeItalicTooltips ) do
aliases[name] = { title = '&6&o', name = name }
end
-- Animated icons --
local animatedIcons = {
'Blue Key',
'Bubble Column',
'Calibrated Sculk Sensor',
'Compass',
'Clock',
'Crimson Hyphae',
'Crimson Stem',
'Debug Stick',
'Fire',
'Gear',
'Heat Block',
'Lava',
'Lodestone Compass',
'Magma Block',
'Magma Block BE',
'Nether Portal',
'Prismarine',
'Prismarine Slab',
'Prismarine Stairs',
'Prismarine Wall',
'Recovery Compass',
'Red Key',
'Sea Lantern',
'Stonecutter',
'Soul Fire',
'Sculk',
'Sculk Shrieker';
'Sculk Shrieker BE',
'Sculk Sensor',
'Sculk Sensor BE',
'Sculk Vein',
'Warped Hyphae',
'Warped Stem',
'Water',
'Written Book',
'Yellow Key'
}
for _, icon in ipairs( animatedIcons ) do
aliases[icon] = icon .. '.gif'
end
-- Some things are both animated and yellow --
local animatedIconsYellowTooltips = {
'Enchanted Book',
'Nether Star',
'Bottle o\' Enchanting',
}
for _, name in ipairs( animatedIconsYellowTooltips ) do
aliases[name] = { title = '&e', name = name .. '.gif' }
end
-- Some things are both animated and aqua --
local animatedIconsAquaTooltips = {
'End Crystal',
}
for _, name in ipairs( animatedIconsAquaTooltips ) do
aliases[name] = { title = '&b', name = name .. '.gif' }
end
-- Some things are both animated and purple --
local animatedIconsPurpleTooltips = {
'Command Block',
'Chain Command Block',
'Repeating Command Block',
'Enchanted Golden Apple',
}
for _, name in ipairs( animatedIconsPurpleTooltips ) do
aliases[name] = { title = '&d', name = name .. '.gif' }
end
-- Bedrock Edition Items --
local animatedEditionItems = {
BE = {
'Lodestone Compass',
},
LCE = {
}
}
for edition, items in pairs(animatedEditionItems) do
for _, item in ipairs(items) do
local name = item .. ' ' .. edition
aliases[name] = { title = item, name = name .. '.gif' }
end
end
-- Tools and weapons --
local tools = {
{'Wooden', 'Sword', 1.6, 4 },
{'Stone', 'Sword', 1.6, 5 },
{'Iron', 'Sword', 1.6, 6 },
{'Golden', 'Sword', 1.6, 4 },
{'Diamond', 'Sword', 1.6, 7 },
{'Netherite', 'Sword', 1.6, 8 },
{'Wooden', 'Pickaxe', 1.2, 2 },
{'Stone', 'Pickaxe', 1.2, 3 },
{'Iron', 'Pickaxe', 1.2, 4 },
{'Golden', 'Pickaxe', 1.2, 2 },
{'Diamond', 'Pickaxe', 1.2, 5 },
{'Netherite', 'Pickaxe', 1.2, 6 },
{'Wooden', 'Axe', 0.8, 7 },
{'Stone', 'Axe', 0.8, 9 },
{'Iron', 'Axe', 0.9, 9 },
{'Golden', 'Axe', 1, 7 },
{'Diamond', 'Axe', 1, 9 },
{'Netherite', 'Axe', 1, 10 },
{'Wooden', 'Shovel', 1, 2.5 },
{'Stone', 'Shovel', 1, 3.5 },
{'Iron', 'Shovel', 1, 4.5 },
{'Golden', 'Shovel', 1, 2.5 },
{'Diamond', 'Shovel', 1, 5.5 },
{'Netherite', 'Shovel', 1.6, 6.5 },
{'Wooden', 'Hoe', 1, 1 },
{'Stone', 'Hoe', 2, 1 },
{'Iron', 'Hoe', 3, 1 },
{'Golden', 'Hoe', 1, 1 },
{'Diamond', 'Hoe', 4, 1 },
{'Netherite', 'Hoe', 4, 1 }
}
local materialGroups = {}
local toolGroups = {}
for _, toolProps in ipairs( tools ) do
local aliasName = toolProps[1] .. ' ' .. toolProps[2]
local damagedName = 'Damaged ' .. aliasName
local text = '/&7When in main hand:/ &2' .. toolProps[3] .. ' Attack Speed/ &2' .. toolProps[4] .. ' Attack Damage'
aliases[aliasName] = { title = aliasName, name = aliasName, text = text }
-- add damaged here as well so it gets the proper tooltip
aliases[damagedName] = { title = aliasName, name = damagedName, text = text }
local materialGroup = toolProps[1]:lower();
local toolGroup = toolProps[2]:lower();
if toolProps[2] ~= 'Sword' then
if materialGroups[materialGroup] == nil then materialGroups[materialGroup] = {} end
table.insert( materialGroups[materialGroup], aliases[aliasName] )
end
if toolGroups[toolGroup] == nil then toolGroups[toolGroup] = {} end
table.insert( toolGroups[toolGroup], aliases[aliasName] )
end
for materialGroup, items in pairs( materialGroups ) do
aliases['Any ' .. materialGroup .. ' tools'] = items
end
for toolGroup, items in pairs( toolGroups ) do
aliases['Any ' .. toolGroup] = items
end
-- Tools and weapons in Bedrock Edition --
local toolsBE = {
{'Wooden', 'Sword', 4 },
{'Stone', 'Sword', 5 },
{'Iron', 'Sword', 6 },
{'Golden', 'Sword', 4 },
{'Diamond', 'Sword', 7 },
{'Netherite', 'Sword', 8 },
{'Wooden', 'Pickaxe', 2 },
{'Stone', 'Pickaxe', 3 },
{'Iron', 'Pickaxe', 4 },
{'Golden', 'Pickaxe', 2 },
{'Diamond', 'Pickaxe', 5 },
{'Netherite', 'Pickaxe', 6 },
{'Wooden', 'Axe', 3 },
{'Stone', 'Axe', 4 },
{'Iron', 'Axe', 5 },
{'Golden', 'Axe', 3 },
{'Diamond', 'Axe', 6 },
{'Netherite', 'Axe', 7 },
{'Wooden', 'Shovel', 1 },
{'Stone', 'Shovel', 2 },
{'Iron', 'Shovel', 3 },
{'Golden', 'Shovel', 1 },
{'Diamond', 'Shovel', 4 },
{'Netherite', 'Shovel', 5 },
{'Wooden', 'Hoe', 2 },
{'Stone', 'Hoe', 3 },
{'Iron', 'Hoe', 4 },
{'Golden', 'Hoe', 2 },
{'Diamond', 'Hoe', 5 },
{'Netherite', 'Hoe', 6 }
}
for _, toolProps in ipairs( toolsBE ) do
local aliasName = toolProps[1] .. ' ' .. toolProps[2]
aliases[aliasName .. ' BE'] = { title = aliasName, name = aliasName, text = '/&9+' .. toolProps[3] .. ' Attack Damage'}
end
-- Lists of item variants --
local itemVariants = {
['Dye'] = mw.clone( coloredDyes ),
['Colored Dye'] = coloredDyes,
['Dyed Wool'] = {
'Orange Wool', 'Magenta Wool', 'Light Blue Wool', 'Yellow Wool', 'Lime Wool',
'Pink Wool', 'Gray Wool', 'Light Gray Wool', 'Cyan Wool', 'Purple Wool',
'Blue Wool', 'Brown Wool', 'Green Wool', 'Red Wool', 'Black Wool',
},
['Dyed Bed'] = {
'Orange Bed', 'Magenta Bed', 'Light Blue Bed', 'Yellow Bed', 'Lime Bed',
'Pink Bed', 'Gray Bed', 'Light Gray Bed', 'Cyan Bed', 'Purple Bed',
'Blue Bed', 'Brown Bed', 'Green Bed', 'Red Bed', 'Black Bed',
},
['Dyed Carpet'] = {
'Orange Carpet', 'Magenta Carpet', 'Light Blue Carpet', 'Yellow Carpet', 'Lime Carpet',
'Pink Carpet', 'Gray Carpet', 'Light Gray Carpet', 'Cyan Carpet', 'Purple Carpet',
'Blue Carpet', 'Brown Carpet', 'Green Carpet', 'Red Carpet', 'Black Carpet',
},
['Dyed Terracotta'] = {
'White Terracotta', 'Orange Terracotta', 'Magenta Terracotta', 'Light Blue Terracotta',
'Yellow Terracotta', 'Lime Terracotta', 'Pink Terracotta', 'Gray Terracotta',
'Light Gray Terracotta', 'Cyan Terracotta', 'Purple Terracotta', 'Blue Terracotta',
'Brown Terracotta', 'Green Terracotta', 'Red Terracotta', 'Black Terracotta',
},
['Dyed Candle'] = {
'White Candle', 'Orange Candle', 'Magenta Candle', 'Light Blue Candle',
'Yellow Candle', 'Lime Candle', 'Pink Candle', 'Gray Candle',
'Light Gray Candle', 'Cyan Candle', 'Purple Candle', 'Blue Candle',
'Brown Candle', 'Green Candle', 'Red Candle', 'Black Candle',
},
['Flower'] = { 'Oxeye Daisy', 'Cornflower', 'Lily of the Valley', 'Wither Rose', 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip', 'Azure Bluet', 'Allium', 'Blue Orchid', 'Poppy', 'Dandelion', 'Torchflower' },
['Mushroom'] = { 'Red Mushroom', 'Brown Mushroom' },
['Quartz Block'] = { 'Block of Quartz', 'Chiseled Quartz Block', 'Quartz Pillar' },
['Red Sandstone'] = { 'Red Sandstone', 'Cut Red Sandstone', 'Chiseled Red Sandstone', 'Smooth Red Sandstone' },
['Sandstone'] = { 'Sandstone', 'Cut Sandstone', 'Chiseled Sandstone', 'Smooth Sandstone' },
['Stone Bricks'] = { 'Stone Bricks', 'Mossy Stone Bricks', 'Cracked Stone Bricks', 'Chiseled Stone Bricks' },
['Stone Slab'] = { 'Stone Slab', 'Smooth Stone Slab', 'Cobblestone Slab', 'Mossy Cobblestone Slab', 'Stone Brick Slab', 'Mossy Stone Brick Slab', 'Andesite Slab', 'Polished Andesite Slab',
'Diorite Slab', 'Polished Diorite Slab', 'Granite Slab', 'Polished Granite Slab', 'Sandstone Slab', 'Cut Sandstone Slab', 'Smooth Sandstone Slab', 'Red Sandstone Slab', 'Cut Red Sandstone Slab',
'Smooth Red Sandstone Slab', 'Brick Slab', { title = 'Prismarine Slab', name = 'Prismarine Slab.gif' }, 'Prismarine Brick Slab', 'Dark Prismarine Slab', 'Nether Brick Slab', 'Red Nether Brick Slab', 'Quartz Slab',
'Smooth Quartz Slab', 'Purpur Slab', 'End Stone Brick Slab', 'Petrified Oak Slab', 'Blackstone Slab', 'Polished Blackstone Slab', 'Polished Blackstone Brick Slab', 'Cobbled Deepslate Slab', 'Deepslate Brick Slab',
'Deepslate Tile Slab', 'Polished Deepslate Slab' },
['Stone Stairs'] = { 'Stone Stairs', 'Cobblestone Stairs', 'Mossy Cobblestone Stairs', 'Stone Brick Stairs', 'Mossy Stone Brick Stairs', 'Andesite Stairs', 'Polished Andesite Stairs',
'Diorite Stairs', 'Polished Diorite Stairs', 'Granite Stairs', 'Polished Granite Stairs', 'Sandstone Stairs', 'Smooth Sandstone Stairs', 'Red Sandstone Stairs', 'Smooth Red Sandstone Stairs',
'Brick Stairs', { title = 'Prismarine Stairs', name = 'Prismarine Stairs.gif' }, 'Prismarine Brick Stairs', 'Dark Prismarine Stairs', 'Nether Brick Stairs', 'Red Nether Brick Stairs', 'Quartz Stairs', 'Smooth Quartz Stairs', 'Purpur Stairs',
'End Stone Brick Stairs', 'Blackstone Stairs', 'Polished Blackstone Stairs', 'Polished Blackstone Brick Stairs', 'Cobbled Deepslate Stairs', 'Deepslate Brick Stairs', 'Deepslate Tile Stairs',
'Polished Deepslate Stairs' },
['Purpur Block'] = { 'Purpur Block', 'Purpur Pillar' },
['Stone'] = { 'Stone', 'Andesite', 'Granite', 'Diorite', 'Polished Andesite', 'Polished Granite', 'Polished Diorite' },
['Tulip'] = { 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip' },
['Prismarine'] = { { title = 'Prismarine', name = 'Prismarine.gif' }, 'Prismarine Bricks', 'Dark Prismarine' },
['Ore'] = { 'Coal Ore', 'Iron Ore', 'Gold Ore', 'Lapis Lazuli Ore', 'Redstone Ore', 'Emerald Ore', 'Diamond Ore', 'Nether Quartz Ore', 'Nether Gold Ore', 'Deepslate Coal Ore',
'Deepslate Copper Ore', 'Deepslate Emerald Ore', 'Deepslate Iron Ore', 'Deepslate Gold Ore', 'Deepslate Lapis Lazuli Ore', 'Deepslate Redstone Ore', 'Deepslate Diamond Ore'},
['Dead Coral Block'] = { 'Dead Tube Coral Block', 'Dead Brain Coral Block', 'Dead Bubble Coral Block', 'Dead Fire Coral Block', 'Dead Horn Coral Block' },
['Coral Block'] = { 'Tube Coral Block', 'Brain Coral Block', 'Bubble Coral Block', 'Fire Coral Block', 'Horn Coral Block' },
['Dead Coral'] = { 'Dead Tube Coral', 'Dead Brain Coral', 'Dead Bubble Coral', 'Dead Fire Coral', 'Dead Horn Coral' },
['Dead Coral Fan'] = { 'Dead Tube Coral Fan', 'Dead Brain Coral Fan', 'Dead Bubble Coral Fan', 'Dead Fire Coral Fan', 'Dead Horn Coral Fan' },
['Coral'] = { 'Tube Coral', 'Brain Coral', 'Bubble Coral', 'Fire Coral', 'Horn Coral' },
['Coral Fan'] = { 'Tube Coral Fan', 'Brain Coral Fan', 'Bubble Coral Fan', 'Fire Coral Fan', 'Horn Coral Fan' },
['Wall'] = { 'Cobblestone Wall', 'Mossy Cobblestone Wall', 'Stone Brick Wall', 'Mossy Stone Brick Wall', 'Andesite Wall', 'Diorite Wall', 'Granite Wall', 'Sandstone Wall',
'Red Sandstone Wall', 'Brick Wall', { title = 'Prismarine Wall', name = 'Prismarine Wall.gif' }, 'Nether Brick Wall', 'Red Nether Brick Wall', 'End Stone Brick Wall', 'Blackstone Wall', 'Polished Blackstone Wall',
'Polished Blackstone Brick Wall', 'Cobbled Deepslate Wall', 'Deepslate Brick Wall', 'Deepslate Tile Wall', 'Polished Deepslate Wall' },
['Torch'] = { 'Torch', 'Soul Torch' },
['Lantern'] = { 'Lantern', 'Soul Lantern' },
['Fungus'] = { 'Crimson Fungus', 'Warped Fungus' },
['Fungi'] = { 'Crimson Fungus', 'Warped Fungus' },
['Roots'] = { 'Crimson Roots', 'Warped Roots' },
['Nylium'] = { 'Crimson Nylium', 'Warped Nylium' },
['Soul Sand'] = { 'Soul Sand', 'Soul Soil' },
['Campfire'] = { 'Campfire', 'Soul Campfire' },
['Blackstone'] = { 'Blackstone', 'Polished Blackstone', 'Chiseled Polished Blackstone', 'Polished Blackstone Bricks', 'Cracked Polished Blackstone Bricks' },
['Stone Button'] = { 'Stone Button', 'Polished Blackstone Button' },
['Stone Pressure Plate'] = { 'Stone Pressure Plate', 'Polished Blackstone Pressure Plate' },
['Nether Wood Pressure Plate'] = { 'Crimson Pressure Plate', 'Warped Pressure Plate' },
['Nether Wood Fence'] = { 'Crimson Fence', 'Warped Fence' },
['Nether Wood Trapdoor'] = { 'Crimson Trapdoor', 'Warped Trapdoor' },
['Nether Wood Fence Gate'] = { 'Crimson Fence Gate', 'Warped Fence Gate' },
['Nether Wood Stairs'] = { 'Crimson Stairs', 'Warped Stairs' },
['Nether Wood Door'] = { 'Crimson Door', 'Warped Door' },
['Nether Wood Sign'] = { 'Crimson Sign', 'Warped Sign' },
['Candle'] = { 'Candle', 'White Candle', 'Orange Candle', 'Magenta Candle', 'Light Blue Candle', 'Yellow Candle', 'Lime Candle', 'Pink Candle', 'Gray Candle', 'Light Gray Candle',
'Cyan Candle', 'Purple Candle', 'Blue Candle', 'Brown Candle', 'Green Candle', 'Red Candle', 'Black Candle' },
['Copper Block'] = { 'Copper Block', 'Exposed Copper Block', 'Weathered Copper Block', 'Oxidized Copper Block', 'Waxed Copper Block', 'Waxed Exposed Copper Block', 'Waxed Weathered Copper Block' },
['Cut Copper'] = { 'Cut Copper', 'Exposed Cut Copper', 'Weathered Cut Copper', 'Oxidized Cut Copper', 'Waxed Cut Copper', 'Waxed Exposed Cut Copper', 'Waxed Weathered Cut Copper' },
['Cut Copper Stairs'] = { 'Cut Copper Stairs', 'Exposed Cut Copper Stairs', 'Weathered Cut Copper Stairs', 'Oxidized Cut Copper Stairs', 'Waxed Cut Copper Stairs',
'Waxed Exposed Cut Copper Stairs', 'Waxed Weathered Cut Copper Stairs' },
['Cut Copper Slab'] = { 'Cut Copper Slab', 'Exposed Cut Copper Slab', 'Weathered Cut Copper Slab', 'Oxidized Cut Copper Slab', 'Waxed Cut Copper Slab', 'Waxed Exposed Cut Copper Slab',
'Waxed Weathered Cut Copper Slab' },
}
table.insert( itemVariants['Dye'], 1, 'White Dye' )
for aliasName, aliasItems in pairs( itemVariants ) do
aliases['Any ' .. aliasName] = aliasItems
aliases['Matching ' .. aliasName] = aliasItems
end
-- Copper --
local copperstuff = {
['Matching (Weathered) Copper Block'] = {'Copper Block', 'Lightly Weathered Copper Block', 'Semi-Weathered Copper Block', 'Weathered Copper BlocK'},
['Matching (Weathered) Cut Copper'] = {'Cut Copper', 'Lightly Weathered Cut Copper', 'Semi-Weathered Cut Copper', 'Weathered Cut Copper'},
['Matching Waxed (Weathered) Copper Block'] = {'Waxed Copper Block', 'Waxed Lightly Weathered Copper Block', 'Waxed Semi-Weathered Copper Block'},
['Matching Waxed (Weathered) Cut Copper'] = {'Waxed Cut Copper', 'Waxed Lightly Weathered Cut Copper', 'Waxed Semi-Weathered Cut Copper'},
}
local function map(tbl, f)
local t = {}
for k,v in pairs(tbl) do
t[k] = f(v)
end
return t
end
for k, v in pairs(copperstuff) do
aliases[k] = v
local k1 = k:gsub(' Block$', '')
local v1 = map(v, function(s) return s:gsub(' Block$', '') end)
aliases[k1 .. 'Slab'] = map(v1, function(s) return s .. 'Slab' end)
aliases[k1 .. 'Stairs'] = map(v1, function(s) return s .. 'Stairs' end)
end
-- Discs --
local discs = {
{ '13', 'C418', },
{ 'Cat', 'C418', 'cat' },
{ 'Blocks', 'C418', 'blocks' },
{ 'Chirp', 'C418', 'chirp' },
{ 'Far', 'C418', 'far' },
{ 'Mall', 'C418', 'mall' },
{ 'Mellohi', 'C418', 'mellohi' },
{ 'Stal', 'C418', 'stal' },
{ 'Strad', 'C418', 'strad' },
{ 'Ward', 'C418', 'ward' },
{ '11', 'C418', },
{ 'Wait', 'C418', 'wait' },
{ 'Otherside', 'Lena Raine', 'otherside' },
{ 'Pigstep', 'Lena Raine', },
{ '5', 'Samuel Åberg', },
{ 'Relic', 'Aaron Cherof', },
}
for _, disc in ipairs( discs ) do
local name = 'Music Disc ' .. disc[1]
local artist = disc[2]
local trackname = disc[1]
if disc[3] ~= nil then
trackname = disc[3]
end
aliases[name] = { title = '&bMusic Disc', name = name, text = '&7' .. artist .. ' - ' .. trackname }
end
-- Disc Fragments --
local disc_fragments = {
{ '5', },
}
for _, disc_fragment in ipairs( disc_fragments ) do
local name = 'Disc Fragment ' .. disc_fragment[1]
local trackname = disc_fragment[1]
if disc_fragment[2] ~= nil then
trackname = disc_fragment[2]
end
aliases[name] = { title = '&fDisc Fragment', name = name, text = '&7Music Disc - ' .. trackname }
end
-- Damaged armor, note it skips tools and weapons as they are handled above to add the damage tooltip --
local damagedItems = {
'Bow',
'Brush',
'Carrot on a Stick',
'Chainmail Boots',
'Chainmail Chestplate',
'Chainmail Helmet',
'Chainmail Leggings',
'Crossbow',
'Diamond Boots',
'Diamond Chestplate',
'Diamond Helmet',
'Diamond Leggings',
'Elytra',
'Fishing Rod',
'Flint and Steel',
'Golden Boots',
'Golden Chestplate',
'Golden Helmet',
'Golden Leggings',
'Iron Boots',
'Iron Chestplate',
'Iron Helmet',
'Iron Leggings',
'Leather Boots',
'Leather Tunic',
'Leather Cap',
'Leather Pants',
'Netherite Boots',
'Netherite Chestplate',
'Netherite Helmet',
'Netherite Leggings',
'Shears',
'Shield'
}
for _, item in ipairs( damagedItems ) do
local name = 'Damaged ' .. item
aliases[name] = { title = item, name = name }
end
-- Banners and colored items --
local patterns = {
'Base Dexter Canton',
'Base',
'Base Gradient',
'Base Indented',
'Base Sinister Canton',
'Bend',
'Bend Sinister',
'Bordure',
'Bordure Indented',
'Chevron',
'Chief Dexter Canton',
'Chief',
'Chief Indented',
'Chief Sinister Canton',
'Creeper Charge',
'Cross',
'Fess',
'Field Masoned',
'Flower Charge',
'Globe',
'Gradient',
'Inverted Chevron',
'Lozenge',
'Thing',
'Pale',
'Pale Dexter',
'Pale Sinister',
'Paly',
'Per Bend',
'Per Bend Inverted',
'Per Bend Sinister',
'Per Bend Sinister Inverted',
'Per Fess',
'Per Fess Inverted',
'Per Pale',
'Per Pale Inverted',
'Piglin',
'Snout',
'Roundel',
'Saltire',
'Skull Charge'
}
local colors = {
'White',
'Orange',
'Magenta',
'Light Blue',
'Yellow',
'Lime',
'Pink',
'Gray',
'Light Gray',
'Cyan',
'Purple',
'Blue',
'Brown',
'Green',
'Red',
'Black'
}
-- Firework Stars --
local fireworkStar = {}
for _, color in ipairs( colors ) do
local name = color .. ' Firework Star'
aliases[name] = { title = 'Firework Star', name = name, text = '&7' .. color }
table.insert( fireworkStar, aliases[name] )
for _, pattern in ipairs( patterns ) do
name = color .. ' ' .. pattern .. ' Banner'
aliases[name] = { title = 'Banner', name = name, text = '&7' .. color .. ' ' .. pattern }
end
end
aliases['Any Firework Star'] = fireworkStar
aliases['Matching Firework Star'] = fireworkStar
-- Items that use the sixteen colors --
local coloredItems = {
'Balloon',
'Banner',
'Bed',
'Carpet',
'Concrete',
'Concrete Powder',
'Glazed Terracotta',
'Hardened $1 Stained Glass',
'Hardened $1 Stained Glass Pane',
'Shield',
'Shulker Box',
'Stained Glass',
'Stained Glass Pane',
'Wool'
}
for _, item in ipairs( coloredItems ) do
local coloredItemAliases = {}
local itemName = ''
for _, color in ipairs( colors ) do
if item:find( '%$1' ) then
itemName = item:gsub( '%$1', color )
else
itemName = color .. ' ' .. item
end
table.insert( coloredItemAliases, itemName )
end
item = item:gsub( '%$1 ', '')
aliases['Any ' .. item] = coloredItemAliases
aliases['Matching ' .. item] = coloredItemAliases
end
-- list of all potions with no effects
local noEffects = {
'Water Bottle',
'Awkward Potion',
'Thick Potion',
'Mundane Potion',
'Uncraftable Potion',
'Splash Water Bottle',
'Awkward Splash Potion',
'Thick Splash Potion',
'Mundane Splash Potion',
'Uncraftable Splash Potion',
'Lingering Water Bottle',
'Awkward Lingering Potion',
'Thick Lingering Potion',
'Mundane Lingering Potion',
'Uncraftable Lingering Potion',
'Tipped Arrow',
'Arrow of Splashing',
'Uncraftable Tipped Arrow',
}
for _, name in ipairs(noEffects) do
aliases[name] = { name = name, text = '&7No effects' }
end
-- start these lists with the no effect items as names are not normal
local potionItems = {
['Potion'] = {
aliases['Water Bottle'],
aliases['Awkward Potion'],
aliases['Thick Potion'],
aliases['Mundane Potion'],
},
['Splash Potion'] = {
aliases['Splash Water Bottle'],
aliases['Awkward Splash Potion'],
aliases['Thick Splash Potion'],
aliases['Mundane Splash Potion'],
},
['Lingering Potion'] = {
aliases['Lingering Water Bottle'],
aliases['Awkward Lingering Potion'],
aliases['Thick Lingering Potion'],
aliases['Mundane Lingering Potion'],
},
['Tipped Arrow'] = {
aliases['Arrow of Splashing'],
aliases['Tipped Arrow'],
aliases['Tipped Arrow'],
aliases['Tipped Arrow'],
},
}
-- Potions --
local effects = {
-- durations are in the order normal, extended, enhanced
{name = 'Regeneration', effect = '&9Regeneration', enhanced = 'II',
durations = { normal = { '0:45', '1:30', '0:22' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}},
{ name = 'Swiftness', effect = '&9Speed', enhanced = 'II',
durations = { normal = { '3:00', '8:00', '1:30' }, lingering = { '0:45', '2:00', '0:22' }, arrow = { '0:22', '1:00', '0:11' }}},
{ name = 'Fire Resistance', effect = '&9Fire Resistance', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Poison', effect = '&cPoison', enhanced = 'II',
durations = { normal = { '0:45', '1:30', '0:21' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}},
{ name = 'Healing', effect = '&9Instant Health', enhanced = 'II' },
{ name = 'Night Vision', effect = '&9Night Vision', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Weakness', effect = '&cWeakness', durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}},
{ name = 'Strength', effect = '&9Strength', enhanced = 'II',
durations = { normal = { '3:00', '8:00', '1:30'}, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}},
{ name = 'Slowness', effect = '&cSlowness', enhanced = 'IV',
durations = { normal = { '1:30', '4:00', '0:20'}, lingering = {'0:22', '1:00', '0:05'}, arrow = { '0:11', '0:30', '0:02' }}},
{ name = 'Leaping', effect = '&9Jump Boost', enhanced = 'II',
durations = { normal = { '3:00', '8:00', '1:30' }, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}},
{ name = 'Harming', effect = '&cInstant Damage', enhanced = 'II' },
{ name = 'Water Breathing', effect = '&9Water Breathing', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Invisibility', effect = '&9Invisibility', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Slow Falling', effect = '&9Slow Falling', durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}},
{ name = 'Luck', effect = '&9Luck', durations = { normal = { '5:00' }, lingering = { '1:15' }, arrow = { '0:37' }}},
{ name = 'Decay', effect = '&cWither', durations = { normal = { '0:40' }, lingering = { '0:10' }, arrow = { '0:05' }}},
{ name = 'the Turtle Master', text = '&cSlowness IV ($1)/&9Resistance III ($1)', enhanced = '&cSlowness VI ($1)/&9Resistance IV ($1)',
durations = { normal = { '0:20', '0:40', '0:20' }, lingering = { '0:15', '0:45', '0:15' }, arrow = { '0:07', '0:22', '0:07' }}}
}
local types = {
{name = 'Potion', durations = 'normal', text = 'Potion of '},
{name = 'Splash Potion', durations = 'normal', text = 'Splash Potion of '},
{name = 'Lingering Potion', durations = 'lingering', text = 'Lingering Potion of '},
{name = 'Tipped Arrow', durations = 'arrow', text = 'Arrow of '},
}
for _, effect in ipairs(effects) do
for _, type in ipairs(types) do
-- form name, it will be reused
local name = type.text .. effect.name
local potionName = {}
if type.name == 'Tipped Arrow' then
potionName = type.text .. effect.name
else
potionName = type.text .. effect.name
end
-- if we have durations, add times
if effect.durations then
local durations = effect.durations[type.durations]
-- turtle master is weird, so just do a fancy string replacement
if effect.text then
aliases[name] = { name = potionName, text = effect.text:gsub( '%$1', durations[1] ) }
aliases[name .. ' Extended'] = { name = potionName, text = effect.text:gsub( '%$1', durations[2] ) }
aliases[name .. ' Enhanced'] = { name = potionName, text = effect.enhanced:gsub( '%$1', durations[3] ) }
else
-- we always have normal
aliases[name] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[1] ) }
-- ensure we have extended
if durations[2] then
aliases[name .. ' Extended'] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[2] ) }
-- and enhanced, currently there is nothing with a duration that can be extended but not enhanced
if effect.enhanced then
aliases[name .. ' Enhanced'] = { name = potionName, text = string.format( '%s %s (%s)', effect.effect, effect.enhanced, durations[3] ) }
end
end
end
else
-- otherwise its just effect, currently every potion with no duration can be enhanced
aliases[name] = { name = potionName, text = effect.effect}
aliases[name .. ' Enhanced'] = { name = potionName, text = effect.effect .. ' ' .. effect.enhanced }
end
-- add the base potion to the any list
table.insert(potionItems[type.name], aliases[name])
end
end
-- build the any lists
for item, potionAliases in pairs( potionItems ) do
aliases['Any ' .. item] = potionAliases
aliases['Matching ' .. item] = potionAliases
end
-- Wood --
local woodTypes = {
overworld = {
'Oak',
'Spruce',
'Birch',
'Jungle',
'Acacia',
'Dark Oak',
'Mangrove',
'Cherry',
'Bamboo',
},
nether = {
'Crimson',
'Warped',
},
both = {},
}
local woodTypeWorld = {}
for _, world in ipairs({'overworld', 'nether'}) do
local woods = woodTypes[world]
for _, type in ipairs(woods) do
woodTypeWorld[type] = world
table.insert(woodTypes.both, type)
end
end
local woodItems = {
overworld = {
'Wood',
'Log',
'Boat',
'Boat with Chest',
'Stripped $1 Log',
'Stripped $1 Wood',
'Wood Planks',
'Wood Slab',
'Wood Stairs',
'Wood Pressure Plate',
'Wood Button',
'Wood Door',
'Wood Trapdoor',
'Wood Fence Gate',
'Wood Fence',
'Wood Sign',
'Sapling',
},
nether = {
'Stem',
'Hyphae',
'Stripped $1 Stem',
'Stripped $1 Hyphae',
},
both = {
'$world Planks',
'${Wood,Hyphae}',
'${Log,Stem}',
'Stripped $1 ${Wood,Hyphae}',
'Stripped $1 ${Log,Stem}',
'Fence Gate',
-- '$world Wood Fence',
'$wood Fence',
'$wood Door',
'$wood Button',
'$wood Pressure Plate',
'$world Hanging Sign',
'$wood Trapdoor',
'$world $wood Slab',
'$wood Stairs',
'Sign'
}
}
local woodItemWorld = {}
for world, items in pairs(woodItems) do
for _, item in ipairs(items) do
-- expand $world (should only happen in "both")
if (item:find('%$world')) and world == 'both' then
item = item:gsub('%$world ', '')
woodItemWorld['Overworld ' .. item] = 'overworld'
woodItemWorld['Nether ' .. item] = 'nether'
end
woodItemWorld[item] = world
end
end
local woodBadItems = {
['Bamboo Hanging Sign'] = 1,
['Bamboo Sapling'] = 1,
['Bamboo Wood'] = 1,
['Bamboo Log'] = 1,
['Stripped Bamboo Wood'] = 1,
['Stripped Bamboo Log'] = 1,
}
local woodNameMapping = {
['Mangrove Sapling'] = 'Mangrove Propagule',
['Bamboo Boat'] = 'Bamboo Raft',
['Bamboo Boat with Chest'] = 'Bamboo Raft with Chest',
}
for item, world in pairs(woodItemWorld) do
local itemName = ''
local woodAliases = {}
-- real "linkable" name
local realItem = item:gsub('^Overworld ', '')
realItem = realItem:gsub('^Nether ', '')
for _, wood in ipairs(woodTypes[world]) do
-- Parse ${,} (world-select) syntax
local selector = (woodTypeWorld[wood] == 'overworld') and "%1" or "%2"
itemName = realItem:gsub("%${(.-),(.-)}", selector)
if itemName:find('%$wood') then
itemName = itemName:gsub('%$wood', wood)
elseif itemName:find('%$1') then
itemName = itemName:gsub( '%$1', wood)
else
itemName = wood .. ' ' .. itemName
end
-- special handling
if woodNameMapping[itemName] then
itemName = woodNameMapping[itemName]
end
if not woodBadItems[itemName] then
table.insert(woodAliases, itemName)
end
end
-- Parse ${,} (world-select) syntax
item = item:gsub("%${(.-),(.-)}", "%1 or %2")
item = item:gsub('%$wood ', 'wood ')
item = item:gsub('%$1 ', '')
aliases['Any ' .. item] = woodAliases
aliases['Matching ' .. item] = woodAliases
end
-- Bedrock Edition Items --
local editionItems = {
BE = {
'Acacia Fence Gate',
'Beacon',
'Birch Fence Gate',
'Black Stained Glass Pane',
'Blue Ice',
'Blue Stained Glass Pane',
'Bow',
'Brown Stained Glass Pane',
'Bucket of Pufferfish',
'Bucket of Tropical Fish',
'Chest',
'Conduit',
'Creeper Head',
'Crimson Fence Gate',
'Crying Obsidian',
'Cyan Stained Glass Pane',
'Dark Oak Fence Gate',
'Dragon Egg',
'Dragon Head',
'Enchanting Table',
'End Gateway',
'End Portal Frame',
'End Portal',
'End Rod',
'Ender Chest',
'Flowing Lava',
'Glass Pane',
'Glowstone',
'Gray Stained Glass Pane',
'Green Stained Glass Pane',
'Head',
'Honey Block',
'Horn Coral Block',
'Iron Bars',
'Jack o\'Lantern',
'Jigsaw Block',
'Jungle Fence Gate',
'Jungle Leaves',
'Lava',
'Leather Horse Armor',
'Light Blue Stained Glass Pane',
'Light Gray Stained Glass Pane',
'Lime Stained Glass Pane',
'Magenta Stained Glass Pane',
'Magma Block',
'Map',
'Minecart with Command Block',
'Monster Spawner',
'Oak Fence Gate',
'Observer',
'Ocean Explorer Map',
'Orange Stained Glass Pane',
'Peony',
'Pink Stained Glass Pane',
'Purple Stained Glass Pane',
'Red Stained Glass Pane',
'Rose Bush',
'Scaffolding',
'Sea Lantern',
'Shroomlight',
'Skeleton Skull',
'Spawn Cat',
'Spawn Panda',
'Spawn Wandering Trader',
'Spawner',
'Spruce Fence Gate',
'Stonecutter',
'Structure Void',
'Trapped Chest',
'Warped Fence Gate',
'White Stained Glass Pane',
'Wither Skeleton Skull',
'Woodland Explorer Map',
'Yellow Stained Glass Pane',
'Zombie Head',
},
LCE = {
'Peony',
'Rose Bush',
'Shrub'
}
}
for edition, items in pairs(editionItems) do
for _, item in ipairs(items) do
local name = item .. ' ' .. edition
aliases[name] = { title = item, name = name }
end
end
-- Light blocks
for level = 0, 15 do
aliases["Light Block " .. level] = {title = "Light Block", name = "Light Block " .. level}
aliases["Light " .. level] = {title = "&dLight", name = "Light " .. level}
end
aliases["Light Negative"] = {title = "&dLight", name = "Light Negative"}
-- Smithing Template
local smithing_templates = {
{ 'Netherite Upgrade', 'Diamond Equipment', 'Netherite Ingot' },
{ 'Coast Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Dune Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Eye Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Host Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Raiser Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Rib Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Sentry Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Shaper Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Silence Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Snout Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Spire Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Tide Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Vex Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Ward Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Wayfinder Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Wild Armor Trim', 'Armor', 'Ingot & Crystals' },
}
local smithing_template_array = {}
local armor_trims_array = {}
for _,smithing_template in pairs(smithing_templates) do
local current_alias = {
title = 'Smithing Template',
name = smithing_template[1] .. ' Smithing Template',
text = '&7' .. smithing_template[1] .. '//Applies to:/ &9' .. smithing_template[2] .. '/&7Ingredients:/ &9' .. smithing_template[3],
}
aliases[smithing_template[1]] = current_alias
aliases[smithing_template[1] .. ' Smithing Template'] = current_alias
table.insert(smithing_template_array,current_alias)
if string.find(smithing_template[1],' Armor Trim$') then
table.insert(armor_trims_array,current_alias)
end
end
aliases['Matching Smithing Template'] = smithing_template_array
aliases['Any Smithing Template'] = smithing_template_array
aliases['Matching Armor Trim'] = armor_trims_array
aliases['Any Armor Trim'] = armor_trims_array
aliases['Matching Armor Trim Smithing Template'] = armor_trims_array
aliases['Any Armor Trim Smithing Template'] = armor_trims_array
return aliases
1a6002cece1708b8394290658b3cd5f4a57cda0a
23
22
2024-04-28T15:47:54Z
Axxyyy
2
1 revision imported
Scribunto
text/plain
local coloredDyes = {
'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Yellow Dye', 'Lime Dye',
'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye',
'Blue Dye', 'Brown Dye', 'Green Dye',
'Red Dye', 'Black Dye',
}
local aliases = {
-- Common fuel types for furnace --
['Any fuel'] = { 'Coal', 'Charcoal', { title = 'Log', name = 'Oak Log' }, { title = 'Overworld Planks', name = 'Oak Planks' }, 'Block of Coal' },
['Any leather armor'] = { 'Leather Cap', 'Leather Tunic', 'Leather Pants', 'Leather Boots' },
['Any golden armor'] = { 'Golden Helmet', 'Golden Chestplate', 'Golden Leggings', 'Golden Boots' },
['Any chainmail armor'] = { 'Chainmail Helmet', 'Chainmail Chestplate', 'Chainmail Leggings', 'Chainmail Boots' },
['Any iron armor'] = { 'Iron Helmet', 'Iron Chestplate', 'Iron Leggings', 'Iron Boots' },
['Any diamond armor'] = { 'Diamond Helmet', 'Diamond Chestplate', 'Diamond Leggings', 'Diamond Boots' },
['Any netherite armor'] = { 'Netherite Helmet', 'Netherite Chestplate', 'Netherite Leggings', 'Netherite Boots' },
['Any Pottery Sherd'] = { 'Angler Pottery Sherd', 'Arms Up Pottery Sherd', 'Archer Pottery Sherd', 'Blade Pottery Sherd', 'Brewer Pottery Sherd', 'Burn Pottery Sherd', 'Danger Pottery Sherd', 'Explorer Pottery Sherd', 'Friend Pottery Sherd', 'Heart Pottery Sherd', 'Heartbreak Pottery Sherd', 'Howl Pottery Sherd', 'Miner Pottery Sherd', 'Mourner Pottery Sherd', 'Plenty Pottery Sherd', 'Prize Pottery Sherd', 'Sheaf Pottery Sherd', 'Shelter Pottery Sherd', 'Skull Pottery Sherd', 'Snort Pottery Sherd', 'Brick' },
-- stones --
['Any Cobblestone or Blackstone'] = { 'Cobblestone', 'Blackstone' },
['Any stone-tier block'] = { 'Cobblestone', 'Blackstone', 'Cobbled Deepslate' },
-- Display names --
['Broken Elytra'] = { title = '&eElytra', name = 'Broken Elytra' },
['Clay (block)'] = { title = 'Clay', name = 'Clay (block)' }, --remove on Nether Update's release if bedrock also changes the item name
['Clay (ball)'] = { title = 'Clay', name = 'Clay (ball)' }, --remove on Nether Update's release if bedrock also changes the item name
['Banner Pattern Flower'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
['Banner Pattern Flower Charge'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Flower Charge'},
['Banner Pattern Creeper Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
['Banner Pattern Creeper'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Creeper Charge'},
['Banner Pattern Bordure Indented'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Bordure Indented'},
['Banner Pattern Field Masoned'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Field Masoned'},
['Banner Pattern Skull Charge'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
['Banner Pattern Skull'] = { title = '&eBanner Pattern', name = 'Banner Pattern', text = '&7Skull Charge'},
['Banner Pattern Thing'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'},
['Banner Pattern Mojang'] = { title = '&dBanner Pattern', name = 'Banner Pattern', text = '&7Thing'},
['Banner Pattern Globe'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Globe'},
['Banner Pattern Snout'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'},
['Banner Pattern Piglin'] = { title = 'Banner Pattern', name = 'Banner Pattern', text = '&7Snout'},
['Button'] = { title = 'Button', name = 'Stone Button'},
['Wooden Button'] = { title = 'Button', name = 'Oak Button'},
['Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Arrow Loaded Crossbow' },
['Damaged Arrow Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Arrow Loaded Crossbow' },
['Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Firework Loaded Crossbow' },
['Damaged Firework Loaded Crossbow'] = { title = 'Crossbow', name = 'Damaged Firework Loaded Crossbow' },
['Illager Banner'] = { title = '&6&oIllager Banner', name = 'Illager Banner', text =
'&7Cyan Lozenge/&7Light Gray Base/&7Gray Pale/&7Light Gray Bordure/&7Black Fess/&7Light Gray Per Fess'},
['Half Filled Bundle'] = { title = 'Bundle', name = 'Half Filled Bundle' },
['Filled Bundle'] = { title = 'Bundle', name = 'Filled Bundle' },
-- Weapons --
['Trident'] = { name = 'Trident', text = '/&7 When in main hand:/ &21.1 Attack Speed/ &29 Attack Damage'},
['Trident BE'] = { name = 'Trident', text = '/&9 +8 Attack Damage'},
-- Bedrock and Education Edition display names --
['Elytra Wings'] = { title = 'Elytra Wings', name = 'Elytra' },
['Cooked Beef'] = { title = 'Cooked Beef', name = 'Steak' },
['Map (no markers)'] = { title = 'Map', name = 'Map', text = 'Display Markers: &cNo' },
['Locator Map'] = { title = 'Map', name = 'Map', text = 'Display Markers: &aYes' },
-- Chemistry --
['Lead (element)'] = { title = 'Lead', name = 'Lead (element)' },
['Water (compound)'] = { title = 'Water', name = 'Water (compound)' },
['Chloride'] = { 'Calcium Chloride', 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' },
['Sparkler'] = { 'Orange Sparkler', 'Blue Sparkler', 'Red Sparkler', 'Purple Sparkler', 'Green Sparkler' },
['Matching Chloride'] = { 'Cerium Chloride', 'Mercuric Chloride', 'Potassium Chloride', 'Tungsten Chloride' },
['Matching Colored Torch'] = { 'Blue Torch', 'Red Torch', 'Purple Torch', 'Green Torch' },
['Matching Glow Stick'] = { 'White Glow Stick', 'Orange Glow Stick', 'Magenta Glow Stick', 'Light Blue Glow Stick',
'Yellow Glow Stick', 'Lime Glow Stick', 'Pink Glow Stick', 'Gray Glow Stick', 'Cyan Glow Stick',
'Purple Glow Stick', 'Blue Glow Stick', 'Brown Glow Stick', 'Green Glow Stick', 'Red Glow Stick' },
}
-- Tooltip colors --
local yellowTooltips = {
'Creeper Head',
'Damaged Elytra',
'Dragon Head',
'Dragon\'s Breath',
'Elytra',
'Head',
'Heart of the Sea',
'Piglin Head',
'Player Head',
'Skeleton Skull',
'Totem of Undying',
'Wither Skeleton Skull',
'Zombie Head',
}
for _, name in ipairs( yellowTooltips ) do
aliases[name] = { title = '&e', name = name }
end
local aquaTooltips = {
'Beacon',
'Conduit',
'Golden Apple',
}
for _, name in ipairs( aquaTooltips ) do
aliases[name] = { title = '&b', name = name }
end
local lightPurpleTooltips = {
'Dragon Egg',
'Structure Block',
'Structure Void',
'Jigsaw Block',
'Barrier',
}
for _, name in ipairs( lightPurpleTooltips ) do
aliases[name] = { title = '&d', name = name }
end
local orangeItalicTooltips = {
'Ominous Banner',
}
for _, name in ipairs( orangeItalicTooltips ) do
aliases[name] = { title = '&6&o', name = name }
end
-- Animated icons --
local animatedIcons = {
'Blue Key',
'Bubble Column',
'Calibrated Sculk Sensor',
'Compass',
'Clock',
'Crimson Hyphae',
'Crimson Stem',
'Debug Stick',
'Fire',
'Gear',
'Heat Block',
'Lava',
'Lodestone Compass',
'Magma Block',
'Magma Block BE',
'Nether Portal',
'Prismarine',
'Prismarine Slab',
'Prismarine Stairs',
'Prismarine Wall',
'Recovery Compass',
'Red Key',
'Sea Lantern',
'Stonecutter',
'Soul Fire',
'Sculk',
'Sculk Shrieker';
'Sculk Shrieker BE',
'Sculk Sensor',
'Sculk Sensor BE',
'Sculk Vein',
'Warped Hyphae',
'Warped Stem',
'Water',
'Written Book',
'Yellow Key'
}
for _, icon in ipairs( animatedIcons ) do
aliases[icon] = icon .. '.gif'
end
-- Some things are both animated and yellow --
local animatedIconsYellowTooltips = {
'Enchanted Book',
'Nether Star',
'Bottle o\' Enchanting',
}
for _, name in ipairs( animatedIconsYellowTooltips ) do
aliases[name] = { title = '&e', name = name .. '.gif' }
end
-- Some things are both animated and aqua --
local animatedIconsAquaTooltips = {
'End Crystal',
}
for _, name in ipairs( animatedIconsAquaTooltips ) do
aliases[name] = { title = '&b', name = name .. '.gif' }
end
-- Some things are both animated and purple --
local animatedIconsPurpleTooltips = {
'Command Block',
'Chain Command Block',
'Repeating Command Block',
'Enchanted Golden Apple',
}
for _, name in ipairs( animatedIconsPurpleTooltips ) do
aliases[name] = { title = '&d', name = name .. '.gif' }
end
-- Bedrock Edition Items --
local animatedEditionItems = {
BE = {
'Lodestone Compass',
},
LCE = {
}
}
for edition, items in pairs(animatedEditionItems) do
for _, item in ipairs(items) do
local name = item .. ' ' .. edition
aliases[name] = { title = item, name = name .. '.gif' }
end
end
-- Tools and weapons --
local tools = {
{'Wooden', 'Sword', 1.6, 4 },
{'Stone', 'Sword', 1.6, 5 },
{'Iron', 'Sword', 1.6, 6 },
{'Golden', 'Sword', 1.6, 4 },
{'Diamond', 'Sword', 1.6, 7 },
{'Netherite', 'Sword', 1.6, 8 },
{'Wooden', 'Pickaxe', 1.2, 2 },
{'Stone', 'Pickaxe', 1.2, 3 },
{'Iron', 'Pickaxe', 1.2, 4 },
{'Golden', 'Pickaxe', 1.2, 2 },
{'Diamond', 'Pickaxe', 1.2, 5 },
{'Netherite', 'Pickaxe', 1.2, 6 },
{'Wooden', 'Axe', 0.8, 7 },
{'Stone', 'Axe', 0.8, 9 },
{'Iron', 'Axe', 0.9, 9 },
{'Golden', 'Axe', 1, 7 },
{'Diamond', 'Axe', 1, 9 },
{'Netherite', 'Axe', 1, 10 },
{'Wooden', 'Shovel', 1, 2.5 },
{'Stone', 'Shovel', 1, 3.5 },
{'Iron', 'Shovel', 1, 4.5 },
{'Golden', 'Shovel', 1, 2.5 },
{'Diamond', 'Shovel', 1, 5.5 },
{'Netherite', 'Shovel', 1.6, 6.5 },
{'Wooden', 'Hoe', 1, 1 },
{'Stone', 'Hoe', 2, 1 },
{'Iron', 'Hoe', 3, 1 },
{'Golden', 'Hoe', 1, 1 },
{'Diamond', 'Hoe', 4, 1 },
{'Netherite', 'Hoe', 4, 1 }
}
local materialGroups = {}
local toolGroups = {}
for _, toolProps in ipairs( tools ) do
local aliasName = toolProps[1] .. ' ' .. toolProps[2]
local damagedName = 'Damaged ' .. aliasName
local text = '/&7When in main hand:/ &2' .. toolProps[3] .. ' Attack Speed/ &2' .. toolProps[4] .. ' Attack Damage'
aliases[aliasName] = { title = aliasName, name = aliasName, text = text }
-- add damaged here as well so it gets the proper tooltip
aliases[damagedName] = { title = aliasName, name = damagedName, text = text }
local materialGroup = toolProps[1]:lower();
local toolGroup = toolProps[2]:lower();
if toolProps[2] ~= 'Sword' then
if materialGroups[materialGroup] == nil then materialGroups[materialGroup] = {} end
table.insert( materialGroups[materialGroup], aliases[aliasName] )
end
if toolGroups[toolGroup] == nil then toolGroups[toolGroup] = {} end
table.insert( toolGroups[toolGroup], aliases[aliasName] )
end
for materialGroup, items in pairs( materialGroups ) do
aliases['Any ' .. materialGroup .. ' tools'] = items
end
for toolGroup, items in pairs( toolGroups ) do
aliases['Any ' .. toolGroup] = items
end
-- Tools and weapons in Bedrock Edition --
local toolsBE = {
{'Wooden', 'Sword', 4 },
{'Stone', 'Sword', 5 },
{'Iron', 'Sword', 6 },
{'Golden', 'Sword', 4 },
{'Diamond', 'Sword', 7 },
{'Netherite', 'Sword', 8 },
{'Wooden', 'Pickaxe', 2 },
{'Stone', 'Pickaxe', 3 },
{'Iron', 'Pickaxe', 4 },
{'Golden', 'Pickaxe', 2 },
{'Diamond', 'Pickaxe', 5 },
{'Netherite', 'Pickaxe', 6 },
{'Wooden', 'Axe', 3 },
{'Stone', 'Axe', 4 },
{'Iron', 'Axe', 5 },
{'Golden', 'Axe', 3 },
{'Diamond', 'Axe', 6 },
{'Netherite', 'Axe', 7 },
{'Wooden', 'Shovel', 1 },
{'Stone', 'Shovel', 2 },
{'Iron', 'Shovel', 3 },
{'Golden', 'Shovel', 1 },
{'Diamond', 'Shovel', 4 },
{'Netherite', 'Shovel', 5 },
{'Wooden', 'Hoe', 2 },
{'Stone', 'Hoe', 3 },
{'Iron', 'Hoe', 4 },
{'Golden', 'Hoe', 2 },
{'Diamond', 'Hoe', 5 },
{'Netherite', 'Hoe', 6 }
}
for _, toolProps in ipairs( toolsBE ) do
local aliasName = toolProps[1] .. ' ' .. toolProps[2]
aliases[aliasName .. ' BE'] = { title = aliasName, name = aliasName, text = '/&9+' .. toolProps[3] .. ' Attack Damage'}
end
-- Lists of item variants --
local itemVariants = {
['Dye'] = mw.clone( coloredDyes ),
['Colored Dye'] = coloredDyes,
['Dyed Wool'] = {
'Orange Wool', 'Magenta Wool', 'Light Blue Wool', 'Yellow Wool', 'Lime Wool',
'Pink Wool', 'Gray Wool', 'Light Gray Wool', 'Cyan Wool', 'Purple Wool',
'Blue Wool', 'Brown Wool', 'Green Wool', 'Red Wool', 'Black Wool',
},
['Dyed Bed'] = {
'Orange Bed', 'Magenta Bed', 'Light Blue Bed', 'Yellow Bed', 'Lime Bed',
'Pink Bed', 'Gray Bed', 'Light Gray Bed', 'Cyan Bed', 'Purple Bed',
'Blue Bed', 'Brown Bed', 'Green Bed', 'Red Bed', 'Black Bed',
},
['Dyed Carpet'] = {
'Orange Carpet', 'Magenta Carpet', 'Light Blue Carpet', 'Yellow Carpet', 'Lime Carpet',
'Pink Carpet', 'Gray Carpet', 'Light Gray Carpet', 'Cyan Carpet', 'Purple Carpet',
'Blue Carpet', 'Brown Carpet', 'Green Carpet', 'Red Carpet', 'Black Carpet',
},
['Dyed Terracotta'] = {
'White Terracotta', 'Orange Terracotta', 'Magenta Terracotta', 'Light Blue Terracotta',
'Yellow Terracotta', 'Lime Terracotta', 'Pink Terracotta', 'Gray Terracotta',
'Light Gray Terracotta', 'Cyan Terracotta', 'Purple Terracotta', 'Blue Terracotta',
'Brown Terracotta', 'Green Terracotta', 'Red Terracotta', 'Black Terracotta',
},
['Dyed Candle'] = {
'White Candle', 'Orange Candle', 'Magenta Candle', 'Light Blue Candle',
'Yellow Candle', 'Lime Candle', 'Pink Candle', 'Gray Candle',
'Light Gray Candle', 'Cyan Candle', 'Purple Candle', 'Blue Candle',
'Brown Candle', 'Green Candle', 'Red Candle', 'Black Candle',
},
['Flower'] = { 'Oxeye Daisy', 'Cornflower', 'Lily of the Valley', 'Wither Rose', 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip', 'Azure Bluet', 'Allium', 'Blue Orchid', 'Poppy', 'Dandelion', 'Torchflower' },
['Mushroom'] = { 'Red Mushroom', 'Brown Mushroom' },
['Quartz Block'] = { 'Block of Quartz', 'Chiseled Quartz Block', 'Quartz Pillar' },
['Red Sandstone'] = { 'Red Sandstone', 'Cut Red Sandstone', 'Chiseled Red Sandstone', 'Smooth Red Sandstone' },
['Sandstone'] = { 'Sandstone', 'Cut Sandstone', 'Chiseled Sandstone', 'Smooth Sandstone' },
['Stone Bricks'] = { 'Stone Bricks', 'Mossy Stone Bricks', 'Cracked Stone Bricks', 'Chiseled Stone Bricks' },
['Stone Slab'] = { 'Stone Slab', 'Smooth Stone Slab', 'Cobblestone Slab', 'Mossy Cobblestone Slab', 'Stone Brick Slab', 'Mossy Stone Brick Slab', 'Andesite Slab', 'Polished Andesite Slab',
'Diorite Slab', 'Polished Diorite Slab', 'Granite Slab', 'Polished Granite Slab', 'Sandstone Slab', 'Cut Sandstone Slab', 'Smooth Sandstone Slab', 'Red Sandstone Slab', 'Cut Red Sandstone Slab',
'Smooth Red Sandstone Slab', 'Brick Slab', { title = 'Prismarine Slab', name = 'Prismarine Slab.gif' }, 'Prismarine Brick Slab', 'Dark Prismarine Slab', 'Nether Brick Slab', 'Red Nether Brick Slab', 'Quartz Slab',
'Smooth Quartz Slab', 'Purpur Slab', 'End Stone Brick Slab', 'Petrified Oak Slab', 'Blackstone Slab', 'Polished Blackstone Slab', 'Polished Blackstone Brick Slab', 'Cobbled Deepslate Slab', 'Deepslate Brick Slab',
'Deepslate Tile Slab', 'Polished Deepslate Slab' },
['Stone Stairs'] = { 'Stone Stairs', 'Cobblestone Stairs', 'Mossy Cobblestone Stairs', 'Stone Brick Stairs', 'Mossy Stone Brick Stairs', 'Andesite Stairs', 'Polished Andesite Stairs',
'Diorite Stairs', 'Polished Diorite Stairs', 'Granite Stairs', 'Polished Granite Stairs', 'Sandstone Stairs', 'Smooth Sandstone Stairs', 'Red Sandstone Stairs', 'Smooth Red Sandstone Stairs',
'Brick Stairs', { title = 'Prismarine Stairs', name = 'Prismarine Stairs.gif' }, 'Prismarine Brick Stairs', 'Dark Prismarine Stairs', 'Nether Brick Stairs', 'Red Nether Brick Stairs', 'Quartz Stairs', 'Smooth Quartz Stairs', 'Purpur Stairs',
'End Stone Brick Stairs', 'Blackstone Stairs', 'Polished Blackstone Stairs', 'Polished Blackstone Brick Stairs', 'Cobbled Deepslate Stairs', 'Deepslate Brick Stairs', 'Deepslate Tile Stairs',
'Polished Deepslate Stairs' },
['Purpur Block'] = { 'Purpur Block', 'Purpur Pillar' },
['Stone'] = { 'Stone', 'Andesite', 'Granite', 'Diorite', 'Polished Andesite', 'Polished Granite', 'Polished Diorite' },
['Tulip'] = { 'Red Tulip', 'Orange Tulip', 'White Tulip', 'Pink Tulip' },
['Prismarine'] = { { title = 'Prismarine', name = 'Prismarine.gif' }, 'Prismarine Bricks', 'Dark Prismarine' },
['Ore'] = { 'Coal Ore', 'Iron Ore', 'Gold Ore', 'Lapis Lazuli Ore', 'Redstone Ore', 'Emerald Ore', 'Diamond Ore', 'Nether Quartz Ore', 'Nether Gold Ore', 'Deepslate Coal Ore',
'Deepslate Copper Ore', 'Deepslate Emerald Ore', 'Deepslate Iron Ore', 'Deepslate Gold Ore', 'Deepslate Lapis Lazuli Ore', 'Deepslate Redstone Ore', 'Deepslate Diamond Ore'},
['Dead Coral Block'] = { 'Dead Tube Coral Block', 'Dead Brain Coral Block', 'Dead Bubble Coral Block', 'Dead Fire Coral Block', 'Dead Horn Coral Block' },
['Coral Block'] = { 'Tube Coral Block', 'Brain Coral Block', 'Bubble Coral Block', 'Fire Coral Block', 'Horn Coral Block' },
['Dead Coral'] = { 'Dead Tube Coral', 'Dead Brain Coral', 'Dead Bubble Coral', 'Dead Fire Coral', 'Dead Horn Coral' },
['Dead Coral Fan'] = { 'Dead Tube Coral Fan', 'Dead Brain Coral Fan', 'Dead Bubble Coral Fan', 'Dead Fire Coral Fan', 'Dead Horn Coral Fan' },
['Coral'] = { 'Tube Coral', 'Brain Coral', 'Bubble Coral', 'Fire Coral', 'Horn Coral' },
['Coral Fan'] = { 'Tube Coral Fan', 'Brain Coral Fan', 'Bubble Coral Fan', 'Fire Coral Fan', 'Horn Coral Fan' },
['Wall'] = { 'Cobblestone Wall', 'Mossy Cobblestone Wall', 'Stone Brick Wall', 'Mossy Stone Brick Wall', 'Andesite Wall', 'Diorite Wall', 'Granite Wall', 'Sandstone Wall',
'Red Sandstone Wall', 'Brick Wall', { title = 'Prismarine Wall', name = 'Prismarine Wall.gif' }, 'Nether Brick Wall', 'Red Nether Brick Wall', 'End Stone Brick Wall', 'Blackstone Wall', 'Polished Blackstone Wall',
'Polished Blackstone Brick Wall', 'Cobbled Deepslate Wall', 'Deepslate Brick Wall', 'Deepslate Tile Wall', 'Polished Deepslate Wall' },
['Torch'] = { 'Torch', 'Soul Torch' },
['Lantern'] = { 'Lantern', 'Soul Lantern' },
['Fungus'] = { 'Crimson Fungus', 'Warped Fungus' },
['Fungi'] = { 'Crimson Fungus', 'Warped Fungus' },
['Roots'] = { 'Crimson Roots', 'Warped Roots' },
['Nylium'] = { 'Crimson Nylium', 'Warped Nylium' },
['Soul Sand'] = { 'Soul Sand', 'Soul Soil' },
['Campfire'] = { 'Campfire', 'Soul Campfire' },
['Blackstone'] = { 'Blackstone', 'Polished Blackstone', 'Chiseled Polished Blackstone', 'Polished Blackstone Bricks', 'Cracked Polished Blackstone Bricks' },
['Stone Button'] = { 'Stone Button', 'Polished Blackstone Button' },
['Stone Pressure Plate'] = { 'Stone Pressure Plate', 'Polished Blackstone Pressure Plate' },
['Nether Wood Pressure Plate'] = { 'Crimson Pressure Plate', 'Warped Pressure Plate' },
['Nether Wood Fence'] = { 'Crimson Fence', 'Warped Fence' },
['Nether Wood Trapdoor'] = { 'Crimson Trapdoor', 'Warped Trapdoor' },
['Nether Wood Fence Gate'] = { 'Crimson Fence Gate', 'Warped Fence Gate' },
['Nether Wood Stairs'] = { 'Crimson Stairs', 'Warped Stairs' },
['Nether Wood Door'] = { 'Crimson Door', 'Warped Door' },
['Nether Wood Sign'] = { 'Crimson Sign', 'Warped Sign' },
['Candle'] = { 'Candle', 'White Candle', 'Orange Candle', 'Magenta Candle', 'Light Blue Candle', 'Yellow Candle', 'Lime Candle', 'Pink Candle', 'Gray Candle', 'Light Gray Candle',
'Cyan Candle', 'Purple Candle', 'Blue Candle', 'Brown Candle', 'Green Candle', 'Red Candle', 'Black Candle' },
['Copper Block'] = { 'Copper Block', 'Exposed Copper Block', 'Weathered Copper Block', 'Oxidized Copper Block', 'Waxed Copper Block', 'Waxed Exposed Copper Block', 'Waxed Weathered Copper Block' },
['Cut Copper'] = { 'Cut Copper', 'Exposed Cut Copper', 'Weathered Cut Copper', 'Oxidized Cut Copper', 'Waxed Cut Copper', 'Waxed Exposed Cut Copper', 'Waxed Weathered Cut Copper' },
['Cut Copper Stairs'] = { 'Cut Copper Stairs', 'Exposed Cut Copper Stairs', 'Weathered Cut Copper Stairs', 'Oxidized Cut Copper Stairs', 'Waxed Cut Copper Stairs',
'Waxed Exposed Cut Copper Stairs', 'Waxed Weathered Cut Copper Stairs' },
['Cut Copper Slab'] = { 'Cut Copper Slab', 'Exposed Cut Copper Slab', 'Weathered Cut Copper Slab', 'Oxidized Cut Copper Slab', 'Waxed Cut Copper Slab', 'Waxed Exposed Cut Copper Slab',
'Waxed Weathered Cut Copper Slab' },
}
table.insert( itemVariants['Dye'], 1, 'White Dye' )
for aliasName, aliasItems in pairs( itemVariants ) do
aliases['Any ' .. aliasName] = aliasItems
aliases['Matching ' .. aliasName] = aliasItems
end
-- Copper --
local copperstuff = {
['Matching (Weathered) Copper Block'] = {'Copper Block', 'Lightly Weathered Copper Block', 'Semi-Weathered Copper Block', 'Weathered Copper BlocK'},
['Matching (Weathered) Cut Copper'] = {'Cut Copper', 'Lightly Weathered Cut Copper', 'Semi-Weathered Cut Copper', 'Weathered Cut Copper'},
['Matching Waxed (Weathered) Copper Block'] = {'Waxed Copper Block', 'Waxed Lightly Weathered Copper Block', 'Waxed Semi-Weathered Copper Block'},
['Matching Waxed (Weathered) Cut Copper'] = {'Waxed Cut Copper', 'Waxed Lightly Weathered Cut Copper', 'Waxed Semi-Weathered Cut Copper'},
}
local function map(tbl, f)
local t = {}
for k,v in pairs(tbl) do
t[k] = f(v)
end
return t
end
for k, v in pairs(copperstuff) do
aliases[k] = v
local k1 = k:gsub(' Block$', '')
local v1 = map(v, function(s) return s:gsub(' Block$', '') end)
aliases[k1 .. 'Slab'] = map(v1, function(s) return s .. 'Slab' end)
aliases[k1 .. 'Stairs'] = map(v1, function(s) return s .. 'Stairs' end)
end
-- Discs --
local discs = {
{ '13', 'C418', },
{ 'Cat', 'C418', 'cat' },
{ 'Blocks', 'C418', 'blocks' },
{ 'Chirp', 'C418', 'chirp' },
{ 'Far', 'C418', 'far' },
{ 'Mall', 'C418', 'mall' },
{ 'Mellohi', 'C418', 'mellohi' },
{ 'Stal', 'C418', 'stal' },
{ 'Strad', 'C418', 'strad' },
{ 'Ward', 'C418', 'ward' },
{ '11', 'C418', },
{ 'Wait', 'C418', 'wait' },
{ 'Otherside', 'Lena Raine', 'otherside' },
{ 'Pigstep', 'Lena Raine', },
{ '5', 'Samuel Åberg', },
{ 'Relic', 'Aaron Cherof', },
}
for _, disc in ipairs( discs ) do
local name = 'Music Disc ' .. disc[1]
local artist = disc[2]
local trackname = disc[1]
if disc[3] ~= nil then
trackname = disc[3]
end
aliases[name] = { title = '&bMusic Disc', name = name, text = '&7' .. artist .. ' - ' .. trackname }
end
-- Disc Fragments --
local disc_fragments = {
{ '5', },
}
for _, disc_fragment in ipairs( disc_fragments ) do
local name = 'Disc Fragment ' .. disc_fragment[1]
local trackname = disc_fragment[1]
if disc_fragment[2] ~= nil then
trackname = disc_fragment[2]
end
aliases[name] = { title = '&fDisc Fragment', name = name, text = '&7Music Disc - ' .. trackname }
end
-- Damaged armor, note it skips tools and weapons as they are handled above to add the damage tooltip --
local damagedItems = {
'Bow',
'Brush',
'Carrot on a Stick',
'Chainmail Boots',
'Chainmail Chestplate',
'Chainmail Helmet',
'Chainmail Leggings',
'Crossbow',
'Diamond Boots',
'Diamond Chestplate',
'Diamond Helmet',
'Diamond Leggings',
'Elytra',
'Fishing Rod',
'Flint and Steel',
'Golden Boots',
'Golden Chestplate',
'Golden Helmet',
'Golden Leggings',
'Iron Boots',
'Iron Chestplate',
'Iron Helmet',
'Iron Leggings',
'Leather Boots',
'Leather Tunic',
'Leather Cap',
'Leather Pants',
'Netherite Boots',
'Netherite Chestplate',
'Netherite Helmet',
'Netherite Leggings',
'Shears',
'Shield'
}
for _, item in ipairs( damagedItems ) do
local name = 'Damaged ' .. item
aliases[name] = { title = item, name = name }
end
-- Banners and colored items --
local patterns = {
'Base Dexter Canton',
'Base',
'Base Gradient',
'Base Indented',
'Base Sinister Canton',
'Bend',
'Bend Sinister',
'Bordure',
'Bordure Indented',
'Chevron',
'Chief Dexter Canton',
'Chief',
'Chief Indented',
'Chief Sinister Canton',
'Creeper Charge',
'Cross',
'Fess',
'Field Masoned',
'Flower Charge',
'Globe',
'Gradient',
'Inverted Chevron',
'Lozenge',
'Thing',
'Pale',
'Pale Dexter',
'Pale Sinister',
'Paly',
'Per Bend',
'Per Bend Inverted',
'Per Bend Sinister',
'Per Bend Sinister Inverted',
'Per Fess',
'Per Fess Inverted',
'Per Pale',
'Per Pale Inverted',
'Piglin',
'Snout',
'Roundel',
'Saltire',
'Skull Charge'
}
local colors = {
'White',
'Orange',
'Magenta',
'Light Blue',
'Yellow',
'Lime',
'Pink',
'Gray',
'Light Gray',
'Cyan',
'Purple',
'Blue',
'Brown',
'Green',
'Red',
'Black'
}
-- Firework Stars --
local fireworkStar = {}
for _, color in ipairs( colors ) do
local name = color .. ' Firework Star'
aliases[name] = { title = 'Firework Star', name = name, text = '&7' .. color }
table.insert( fireworkStar, aliases[name] )
for _, pattern in ipairs( patterns ) do
name = color .. ' ' .. pattern .. ' Banner'
aliases[name] = { title = 'Banner', name = name, text = '&7' .. color .. ' ' .. pattern }
end
end
aliases['Any Firework Star'] = fireworkStar
aliases['Matching Firework Star'] = fireworkStar
-- Items that use the sixteen colors --
local coloredItems = {
'Balloon',
'Banner',
'Bed',
'Carpet',
'Concrete',
'Concrete Powder',
'Glazed Terracotta',
'Hardened $1 Stained Glass',
'Hardened $1 Stained Glass Pane',
'Shield',
'Shulker Box',
'Stained Glass',
'Stained Glass Pane',
'Wool'
}
for _, item in ipairs( coloredItems ) do
local coloredItemAliases = {}
local itemName = ''
for _, color in ipairs( colors ) do
if item:find( '%$1' ) then
itemName = item:gsub( '%$1', color )
else
itemName = color .. ' ' .. item
end
table.insert( coloredItemAliases, itemName )
end
item = item:gsub( '%$1 ', '')
aliases['Any ' .. item] = coloredItemAliases
aliases['Matching ' .. item] = coloredItemAliases
end
-- list of all potions with no effects
local noEffects = {
'Water Bottle',
'Awkward Potion',
'Thick Potion',
'Mundane Potion',
'Uncraftable Potion',
'Splash Water Bottle',
'Awkward Splash Potion',
'Thick Splash Potion',
'Mundane Splash Potion',
'Uncraftable Splash Potion',
'Lingering Water Bottle',
'Awkward Lingering Potion',
'Thick Lingering Potion',
'Mundane Lingering Potion',
'Uncraftable Lingering Potion',
'Tipped Arrow',
'Arrow of Splashing',
'Uncraftable Tipped Arrow',
}
for _, name in ipairs(noEffects) do
aliases[name] = { name = name, text = '&7No effects' }
end
-- start these lists with the no effect items as names are not normal
local potionItems = {
['Potion'] = {
aliases['Water Bottle'],
aliases['Awkward Potion'],
aliases['Thick Potion'],
aliases['Mundane Potion'],
},
['Splash Potion'] = {
aliases['Splash Water Bottle'],
aliases['Awkward Splash Potion'],
aliases['Thick Splash Potion'],
aliases['Mundane Splash Potion'],
},
['Lingering Potion'] = {
aliases['Lingering Water Bottle'],
aliases['Awkward Lingering Potion'],
aliases['Thick Lingering Potion'],
aliases['Mundane Lingering Potion'],
},
['Tipped Arrow'] = {
aliases['Arrow of Splashing'],
aliases['Tipped Arrow'],
aliases['Tipped Arrow'],
aliases['Tipped Arrow'],
},
}
-- Potions --
local effects = {
-- durations are in the order normal, extended, enhanced
{name = 'Regeneration', effect = '&9Regeneration', enhanced = 'II',
durations = { normal = { '0:45', '1:30', '0:22' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}},
{ name = 'Swiftness', effect = '&9Speed', enhanced = 'II',
durations = { normal = { '3:00', '8:00', '1:30' }, lingering = { '0:45', '2:00', '0:22' }, arrow = { '0:22', '1:00', '0:11' }}},
{ name = 'Fire Resistance', effect = '&9Fire Resistance', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Poison', effect = '&cPoison', enhanced = 'II',
durations = { normal = { '0:45', '1:30', '0:21' }, lingering = { '0:11', '0:22', '0:05' }, arrow = { '0:05', '0:11', '0:02' }}},
{ name = 'Healing', effect = '&9Instant Health', enhanced = 'II' },
{ name = 'Night Vision', effect = '&9Night Vision', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Weakness', effect = '&cWeakness', durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}},
{ name = 'Strength', effect = '&9Strength', enhanced = 'II',
durations = { normal = { '3:00', '8:00', '1:30'}, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}},
{ name = 'Slowness', effect = '&cSlowness', enhanced = 'IV',
durations = { normal = { '1:30', '4:00', '0:20'}, lingering = {'0:22', '1:00', '0:05'}, arrow = { '0:11', '0:30', '0:02' }}},
{ name = 'Leaping', effect = '&9Jump Boost', enhanced = 'II',
durations = { normal = { '3:00', '8:00', '1:30' }, lingering = {'0:45', '2:00', '0:22'}, arrow = { '0:22', '1:00', '0:11' }}},
{ name = 'Harming', effect = '&cInstant Damage', enhanced = 'II' },
{ name = 'Water Breathing', effect = '&9Water Breathing', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Invisibility', effect = '&9Invisibility', durations = { normal = { '3:00', '8:00' }, lingering = { '0:45', '2:00' }, arrow = { '0:22', '1:00' }}},
{ name = 'Slow Falling', effect = '&9Slow Falling', durations = { normal = { '1:30', '4:00' }, lingering = { '0:22', '1:00' }, arrow = { '0:11', '0:30' }}},
{ name = 'Luck', effect = '&9Luck', durations = { normal = { '5:00' }, lingering = { '1:15' }, arrow = { '0:37' }}},
{ name = 'Decay', effect = '&cWither', durations = { normal = { '0:40' }, lingering = { '0:10' }, arrow = { '0:05' }}},
{ name = 'the Turtle Master', text = '&cSlowness IV ($1)/&9Resistance III ($1)', enhanced = '&cSlowness VI ($1)/&9Resistance IV ($1)',
durations = { normal = { '0:20', '0:40', '0:20' }, lingering = { '0:15', '0:45', '0:15' }, arrow = { '0:07', '0:22', '0:07' }}}
}
local types = {
{name = 'Potion', durations = 'normal', text = 'Potion of '},
{name = 'Splash Potion', durations = 'normal', text = 'Splash Potion of '},
{name = 'Lingering Potion', durations = 'lingering', text = 'Lingering Potion of '},
{name = 'Tipped Arrow', durations = 'arrow', text = 'Arrow of '},
}
for _, effect in ipairs(effects) do
for _, type in ipairs(types) do
-- form name, it will be reused
local name = type.text .. effect.name
local potionName = {}
if type.name == 'Tipped Arrow' then
potionName = type.text .. effect.name
else
potionName = type.text .. effect.name
end
-- if we have durations, add times
if effect.durations then
local durations = effect.durations[type.durations]
-- turtle master is weird, so just do a fancy string replacement
if effect.text then
aliases[name] = { name = potionName, text = effect.text:gsub( '%$1', durations[1] ) }
aliases[name .. ' Extended'] = { name = potionName, text = effect.text:gsub( '%$1', durations[2] ) }
aliases[name .. ' Enhanced'] = { name = potionName, text = effect.enhanced:gsub( '%$1', durations[3] ) }
else
-- we always have normal
aliases[name] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[1] ) }
-- ensure we have extended
if durations[2] then
aliases[name .. ' Extended'] = { name = potionName, text = string.format( '%s (%s)', effect.effect, durations[2] ) }
-- and enhanced, currently there is nothing with a duration that can be extended but not enhanced
if effect.enhanced then
aliases[name .. ' Enhanced'] = { name = potionName, text = string.format( '%s %s (%s)', effect.effect, effect.enhanced, durations[3] ) }
end
end
end
else
-- otherwise its just effect, currently every potion with no duration can be enhanced
aliases[name] = { name = potionName, text = effect.effect}
aliases[name .. ' Enhanced'] = { name = potionName, text = effect.effect .. ' ' .. effect.enhanced }
end
-- add the base potion to the any list
table.insert(potionItems[type.name], aliases[name])
end
end
-- build the any lists
for item, potionAliases in pairs( potionItems ) do
aliases['Any ' .. item] = potionAliases
aliases['Matching ' .. item] = potionAliases
end
-- Wood --
local woodTypes = {
overworld = {
'Oak',
'Spruce',
'Birch',
'Jungle',
'Acacia',
'Dark Oak',
'Mangrove',
'Cherry',
'Bamboo',
},
nether = {
'Crimson',
'Warped',
},
both = {},
}
local woodTypeWorld = {}
for _, world in ipairs({'overworld', 'nether'}) do
local woods = woodTypes[world]
for _, type in ipairs(woods) do
woodTypeWorld[type] = world
table.insert(woodTypes.both, type)
end
end
local woodItems = {
overworld = {
'Wood',
'Log',
'Boat',
'Boat with Chest',
'Stripped $1 Log',
'Stripped $1 Wood',
'Wood Planks',
'Wood Slab',
'Wood Stairs',
'Wood Pressure Plate',
'Wood Button',
'Wood Door',
'Wood Trapdoor',
'Wood Fence Gate',
'Wood Fence',
'Wood Sign',
'Sapling',
},
nether = {
'Stem',
'Hyphae',
'Stripped $1 Stem',
'Stripped $1 Hyphae',
},
both = {
'$world Planks',
'${Wood,Hyphae}',
'${Log,Stem}',
'Stripped $1 ${Wood,Hyphae}',
'Stripped $1 ${Log,Stem}',
'Fence Gate',
-- '$world Wood Fence',
'$wood Fence',
'$wood Door',
'$wood Button',
'$wood Pressure Plate',
'$world Hanging Sign',
'$wood Trapdoor',
'$world $wood Slab',
'$wood Stairs',
'Sign'
}
}
local woodItemWorld = {}
for world, items in pairs(woodItems) do
for _, item in ipairs(items) do
-- expand $world (should only happen in "both")
if (item:find('%$world')) and world == 'both' then
item = item:gsub('%$world ', '')
woodItemWorld['Overworld ' .. item] = 'overworld'
woodItemWorld['Nether ' .. item] = 'nether'
end
woodItemWorld[item] = world
end
end
local woodBadItems = {
['Bamboo Hanging Sign'] = 1,
['Bamboo Sapling'] = 1,
['Bamboo Wood'] = 1,
['Bamboo Log'] = 1,
['Stripped Bamboo Wood'] = 1,
['Stripped Bamboo Log'] = 1,
}
local woodNameMapping = {
['Mangrove Sapling'] = 'Mangrove Propagule',
['Bamboo Boat'] = 'Bamboo Raft',
['Bamboo Boat with Chest'] = 'Bamboo Raft with Chest',
}
for item, world in pairs(woodItemWorld) do
local itemName = ''
local woodAliases = {}
-- real "linkable" name
local realItem = item:gsub('^Overworld ', '')
realItem = realItem:gsub('^Nether ', '')
for _, wood in ipairs(woodTypes[world]) do
-- Parse ${,} (world-select) syntax
local selector = (woodTypeWorld[wood] == 'overworld') and "%1" or "%2"
itemName = realItem:gsub("%${(.-),(.-)}", selector)
if itemName:find('%$wood') then
itemName = itemName:gsub('%$wood', wood)
elseif itemName:find('%$1') then
itemName = itemName:gsub( '%$1', wood)
else
itemName = wood .. ' ' .. itemName
end
-- special handling
if woodNameMapping[itemName] then
itemName = woodNameMapping[itemName]
end
if not woodBadItems[itemName] then
table.insert(woodAliases, itemName)
end
end
-- Parse ${,} (world-select) syntax
item = item:gsub("%${(.-),(.-)}", "%1 or %2")
item = item:gsub('%$wood ', 'wood ')
item = item:gsub('%$1 ', '')
aliases['Any ' .. item] = woodAliases
aliases['Matching ' .. item] = woodAliases
end
-- Bedrock Edition Items --
local editionItems = {
BE = {
'Acacia Fence Gate',
'Beacon',
'Birch Fence Gate',
'Black Stained Glass Pane',
'Blue Ice',
'Blue Stained Glass Pane',
'Bow',
'Brown Stained Glass Pane',
'Bucket of Pufferfish',
'Bucket of Tropical Fish',
'Chest',
'Conduit',
'Creeper Head',
'Crimson Fence Gate',
'Crying Obsidian',
'Cyan Stained Glass Pane',
'Dark Oak Fence Gate',
'Dragon Egg',
'Dragon Head',
'Enchanting Table',
'End Gateway',
'End Portal Frame',
'End Portal',
'End Rod',
'Ender Chest',
'Flowing Lava',
'Glass Pane',
'Glowstone',
'Gray Stained Glass Pane',
'Green Stained Glass Pane',
'Head',
'Honey Block',
'Horn Coral Block',
'Iron Bars',
'Jack o\'Lantern',
'Jigsaw Block',
'Jungle Fence Gate',
'Jungle Leaves',
'Lava',
'Leather Horse Armor',
'Light Blue Stained Glass Pane',
'Light Gray Stained Glass Pane',
'Lime Stained Glass Pane',
'Magenta Stained Glass Pane',
'Magma Block',
'Map',
'Minecart with Command Block',
'Monster Spawner',
'Oak Fence Gate',
'Observer',
'Ocean Explorer Map',
'Orange Stained Glass Pane',
'Peony',
'Pink Stained Glass Pane',
'Purple Stained Glass Pane',
'Red Stained Glass Pane',
'Rose Bush',
'Scaffolding',
'Sea Lantern',
'Shroomlight',
'Skeleton Skull',
'Spawn Cat',
'Spawn Panda',
'Spawn Wandering Trader',
'Spawner',
'Spruce Fence Gate',
'Stonecutter',
'Structure Void',
'Trapped Chest',
'Warped Fence Gate',
'White Stained Glass Pane',
'Wither Skeleton Skull',
'Woodland Explorer Map',
'Yellow Stained Glass Pane',
'Zombie Head',
},
LCE = {
'Peony',
'Rose Bush',
'Shrub'
}
}
for edition, items in pairs(editionItems) do
for _, item in ipairs(items) do
local name = item .. ' ' .. edition
aliases[name] = { title = item, name = name }
end
end
-- Light blocks
for level = 0, 15 do
aliases["Light Block " .. level] = {title = "Light Block", name = "Light Block " .. level}
aliases["Light " .. level] = {title = "&dLight", name = "Light " .. level}
end
aliases["Light Negative"] = {title = "&dLight", name = "Light Negative"}
-- Smithing Template
local smithing_templates = {
{ 'Netherite Upgrade', 'Diamond Equipment', 'Netherite Ingot' },
{ 'Coast Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Dune Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Eye Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Host Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Raiser Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Rib Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Sentry Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Shaper Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Silence Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Snout Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Spire Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Tide Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Vex Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Ward Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Wayfinder Armor Trim', 'Armor', 'Ingot & Crystals' },
{ 'Wild Armor Trim', 'Armor', 'Ingot & Crystals' },
}
local smithing_template_array = {}
local armor_trims_array = {}
for _,smithing_template in pairs(smithing_templates) do
local current_alias = {
title = 'Smithing Template',
name = smithing_template[1] .. ' Smithing Template',
text = '&7' .. smithing_template[1] .. '//Applies to:/ &9' .. smithing_template[2] .. '/&7Ingredients:/ &9' .. smithing_template[3],
}
aliases[smithing_template[1]] = current_alias
aliases[smithing_template[1] .. ' Smithing Template'] = current_alias
table.insert(smithing_template_array,current_alias)
if string.find(smithing_template[1],' Armor Trim$') then
table.insert(armor_trims_array,current_alias)
end
end
aliases['Matching Smithing Template'] = smithing_template_array
aliases['Any Smithing Template'] = smithing_template_array
aliases['Matching Armor Trim'] = armor_trims_array
aliases['Any Armor Trim'] = armor_trims_array
aliases['Matching Armor Trim Smithing Template'] = armor_trims_array
aliases['Any Armor Trim Smithing Template'] = armor_trims_array
return aliases
1a6002cece1708b8394290658b3cd5f4a57cda0a
Module:Random
828
13
24
2023-10-30T11:21:50Z
crafting>~aanzx
0
cleanup
Scribunto
text/plain
local p = {}
local seeded
local randomseed = math.randomseed
local random = math.random
function p.random( m, n )
if not seeded then
p.seed()
end
return random( n and m or m and 1 or 0, n or m or 1 )
end
function p.seed( seed )
randomseed( seed or ( os.time() + os.clock() * 1000000000 ) )
-- First few values of seed is not guaranteed to be random on some platforms
random()
random()
seeded = true
end
return p
9b7fa144f6e50a8f87ea22766f60b3785413e3b9
Module:UI
828
14
26
2023-10-30T11:21:50Z
crafting>~aanzx
0
cleanup
Scribunto
text/plain
local slot = require( [[Module:Inventory slot]] ).slot
local addSlot = function( args, item, prefix, class, default )
local none, nostacksize
prefix = prefix or ''
if #prefix == 0 then
none = 'none'
nostacksize = ((item == '' or nil) and '') or (args and args[item] and args[item]:gsub( '[,%d]', '' ) or '')
end
return slot{
nostacksize or args[item], mod = args.Mod, link = none or args[prefix .. 'link'],
title = none or args[prefix .. 'title'], class = class, default = default,
parsed = args.parsed
}
end
function experience_image(exp_value)
local MINMAX = {
{-32768, 2},
{3, 6},
{7, 16},
{17, 36},
{37, 72},
{73, 148},
{149, 306},
{307, 616},
{617, 1236},
{1237, 2476},
{2477, 32767}
}
local EXP_IMGS = {
"Experience Orb Value -32768-2.png",
"Experience Orb Value 3-6.png",
"Experience Orb Value 7-16.png",
"Experience Orb Value 17-36.png",
"Experience Orb Value 37-72.png",
"Experience Orb Value 73-148.png",
"Experience Orb Value 149-306.png",
"Experience Orb Value 307-616.png",
"Experience Orb Value 617-1236.png",
"Experience Orb Value 1237-2476.png",
"Experience Orb Value 2477-32767.png",
}
local n = assert( tonumber(exp_value), "Module:UI: Experience value is not a number (" .. exp_value .. ")" )
local idx = 2; exp = tonumber( exp_value )
if exp <= MINMAX[#MINMAX][2] then
for i = 1, #MINMAX do
if MINMAX[i][1] < exp and MINMAX[i][2] >= exp then
idx = i
break
end
end
end
return tostring( EXP_IMGS[idx] )
end
local p = {}
-- Crafting table
function p.craftingTable( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Crafting_Table pixel-image' )
local input = body:tag( 'span' ):addClass( 'mcui-input' )
for num = 1, 3 do
local row = input:tag( 'span' ):addClass( 'mcui-row' )
for _, letter in ipairs{ 'A', 'B', 'C' } do
row:wikitext( addSlot( args, letter .. num, 'I' ) )
end
end
local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ):done()
if args.arrow or '' ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}'
)
end
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
local shapeless = args.shapeless or ''
local fixed = args.fixed or ''
if shapeless ~= '' or fixed ~= '' then
local icon = body:tag( 'span' )
:addClass( 'mcui-icons' )
:tag( 'span' )
:tag( 'br' )
:done()
if shapeless ~= '' then
icon:addClass( 'mcui-shapeless' )
:attr( 'title',
'This recipe is shapeless, the inputs may be placed in any arrangement in the crafting grid.'
)
elseif fixed ~= '' then
local notFixed = args.notfixed or ''
local exceptFixed = ''
if notFixed ~= '' then
exceptFixed = '; except for ' .. notFixed .. ', which can go anywhere'
end
icon:addClass( 'mcui-fixed' )
:attr( 'title',
'This recipe is fixed, the input arrangement may not be moved or mirrored in the crafting grid' .. exceptFixed .. '.'
)
end
end
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Furnace
function p.furnace( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Furnace pixel-image' )
local input = body:tag( 'span' ):addClass( 'mcui-input' )
input:wikitext( addSlot( args, 'Input', 'I' ) )
local fuel = input:tag( 'span' ):addClass( 'mcui-fuel' ):tag( 'br' ):done()
local fuelImg = args.FuelUsage or ''
local burning = args.Input or '' ~= '' and args.Fuel or '' ~= ''
if not burning then
fuel:addClass( 'mcui-inactive' )
if fuelImg ~= '' then
fuelImg = fuelImg .. ' (in-active)'
end
end
if fuelImg ~= '' then
fuel:css(
'background-image',
'{{FileUrl|' .. fuelImg .. ' (' .. args.Mod .. ').png}}'
)
end
input:wikitext( addSlot( args, 'Fuel', 'F' ) )
local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ):done()
local arrowImg = args.Progress or ''
if not burning or ( args.Output or '' ) == '' then
arrow:addClass( 'mcui-inactive' )
if arrowImg ~= '' then
arrowImg = arrowImg .. ' (in-active)'
end
end
if arrowImg ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. arrowImg .. ' Progress (' .. args.Mod .. ').png}}'
)
end
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
args.Experience = args.Experience or ''
if args.Experience ~= '' then
-- Converts commas to dots, removes all spaces and splits the arguments with semicolon.
local split = mw.text.split(string.gsub(args.Experience, '[ ,]', {[' '] = '', [','] = '.'}), ';', true)
local animated = body:tag('span'):attr('title', 'If there is a fractional part, it means the recipe has a chance equal to the fractional part of rewarding an additional XP point.')
:addClass('animated'):cssText('position:absolute;top:92px;left:108px;text-align:center;width:70px;')
local isNotFirst = true
for i, v in ipairs(split) do
assert(tonumber(v), 'Module:UI: "' .. v .. '" is not a valid number')
local xp = tonumber(v)
animated:tag('span')
:addClass(isNotFirst and 'animated-active' or nil)
:wikitext('<span style="display:inline-block;margin-top:3px;width:16px;height:16px;vertical-align:top;background-size:16px 16px;background-image:{{FileUrl|' .. experience_image(xp) .. '}}"></span>'
.. '<span style="display:inline-block;vertical-align:top;font-family:Minecraft;font-size:16px;color:#404040">'
.. (' ' and xp > 72 or '') .. xp .. '</span>')
isNotFirst = false
end
end
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Brewing Stand
function p.brewingStand( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Brewing_Stand pixel-image' )
local input = body:tag( 'span' ):addClass( 'mcui-input' )
input:tag( 'span' ):addClass( 'mcui-bubbling' ):tag( 'br' )
input:wikitext( addSlot( args, 'Input', 'I' ) )
input:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' )
if ( args.Input or '' ) == '' or
( ( args.Output1 or '' ) == '' and ( args.Output2 or '' ) == '' and ( args.Output3 or '' ) == '' )
then
input:addClass( 'mcui-inactive' )
end
body:tag( 'span' ):addClass( 'mcui-paths' ):tag( 'br' )
local output = body:tag( 'span' ):addClass( 'mcui-output' )
for i = 1, 3 do
output:wikitext( addSlot( args, 'Output' .. i, 'O' .. i, 'mcui-output' .. i ) )
end
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Stonecutter
function p.stonecutter( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Stonecutter pixel-image' )
local input = body:tag( 'span' ):addClass( 'mcui-input' )
input:wikitext( addSlot( args, 'Input', 'I' ) )
local arrow = body:tag( 'span' ):addClass( 'mcui-stonecutterArrow' )
if (args.arrow or '') ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}'
)
end
arrow:wikitext( addSlot( args, 'Output', '', 'invslot-plain mcui-stonecutterSprite' ) )
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Loom
function p.loom( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Loom pixel-image' )
local tapestry = body:tag( 'span' ):addClass( 'mcui-tapestry' )
if args.Banner and #args.Banner>0 then
tapestry:wikitext( addSlot( args, 'Banner', 'B', 'mcui-inputBanner' ) )
end
if args.Dye and #args.Dye>0 then
tapestry:wikitext( addSlot( args, 'Dye', 'D', 'mcui-inputDye' ) )
end
if args.Pattern and #args.Pattern>0 then
tapestry:wikitext( addSlot( args, 'Pattern', 'P', 'mcui-inputPattern' ) )
end
tapestry:tag( 'span' ):tag( 'br' ):done()
local arrow = body:tag( 'span' ):addClass( 'mcui-loomArrow' )
if args.arrow or '' ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}'
)
end
local sprite = args.Sprite
local bannerSprite
if sprite and #sprite>0 then
local animate = require( [[Module:AnimateSprite]] ).animate
bannerSprite = animate{
args.Sprite,
sheet = 'SlotSprite'
}
else
bannerSprite = '<br>'
end
arrow
:tag( 'span' )
:addClass( 'mcui-bannerSprite' )
:wikitext( bannerSprite )
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Grindstone
function p.grindstone( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Grindstone pixel-image' )
local grindstone = body:tag( 'span' ):addClass( 'mcui-grindstone' )
grindstone:wikitext( addSlot( args, 'Input1', 'I1', 'mcui-input1' ) )
grindstone:wikitext( addSlot( args, 'Input2', 'I2', 'mcui-input2' ) )
local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' )
if args.arrow or '' ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}'
)
end
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Smithing Table
function p.smithing (f)
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
return tostring( mw.html.create( 'div' ):node( body ) )
end
return p
97a9c6a0c750f51165133aca6edc1af4228188c5
Template:Languages
10
45
76
2023-11-13T20:12:51Z
Translation-category>Tacsipacsi
0
alphabetic order
wikitext
text/x-wiki
<includeonly>{{Nmbox|header={{int:tpt-languages-legend}}
|text='''[[{{{1|{{NAMESPACE}}:{{BASEPAGENAME}}}}}|English]]'''<!--
For the tested order below, see https://commons.wikimedia.org/wiki/Module_talk:Multilingual_description/sort/testcases
-->{{Languages/Lang|sma|{{{1|}}}|
}}{{Languages/Lang|ace|{{{1|}}}|
}}{{Languages/Lang|ang|{{{1|}}}|
}}{{Languages/Lang|af|{{{1|}}}|
}}{{Languages/Lang|ak|{{{1|}}}|
}}{{Languages/Lang|gsw|{{{1|}}}|
}}{{Languages/Lang|als|{{{1|}}}|
}}{{Languages/Lang|ase|{{{1|}}}|
}}{{Languages/Lang|smn|{{{1|}}}|
}}{{Languages/Lang|an|{{{1|}}}|
}}{{Languages/Lang|rup|{{{1|}}}|
}}{{Languages/Lang|roa-rup|{{{1|}}}|
}}{{Languages/Lang|frp|{{{1|}}}|
}}{{Languages/Lang|ast|{{{1|}}}|
}}{{Languages/Lang|atj|{{{1|}}}|
}}{{Languages/Lang|gn|{{{1|}}}|
}}{{Languages/Lang|ay|{{{1|}}}|
}}{{Languages/Lang|az|{{{1|}}}|
}}{{Languages/Lang|abs|{{{1|}}}|
}}{{Languages/Lang|gor|{{{1|}}}|
}}{{Languages/Lang|id|{{{1|}}}|
}}{{Languages/Lang|ms|{{{1|}}}|
}}{{Languages/Lang|ban|{{{1|}}}|
}}{{Languages/Lang|bm|{{{1|}}}|
}}{{Languages/Lang|nan|{{{1|}}}|
}}{{Languages/Lang|map-bms|{{{1|}}}|
}}{{Languages/Lang|zh-min-nan|{{{1|}}}|
}}{{Languages/Lang|bjn|{{{1|}}}|
}}{{Languages/Lang|btm|{{{1|}}}|
}}{{Languages/Lang|bbc|{{{1|}}}|
}}{{Languages/Lang|bbc-latn|{{{1|}}}|
}}{{Languages/Lang|sje|{{{1|}}}|
}}{{Languages/Lang|bcl|{{{1|}}}|
}}{{Languages/Lang|bi|{{{1|}}}|
}}{{Languages/Lang|bar|{{{1|}}}|
}}{{Languages/Lang|bs|{{{1|}}}|
}}{{Languages/Lang|brh|{{{1|}}}|
}}{{Languages/Lang|br|{{{1|}}}|
}}{{Languages/Lang|en-ca|{{{1|}}}|
}}{{Languages/Lang|en-gb|{{{1|}}}|
}}{{Languages/Lang|cps|{{{1|}}}|
}}{{Languages/Lang|ca|{{{1|}}}|
}}{{Languages/Lang|ceb|{{{1|}}}|
}}{{Languages/Lang|cs|{{{1|}}}|
}}{{Languages/Lang|ch|{{{1|}}}|
}}{{Languages/Lang|cbk-zam|{{{1|}}}|
}}{{Languages/Lang|ny|{{{1|}}}|
}}{{Languages/Lang|sn|{{{1|}}}|
}}{{Languages/Lang|tum|{{{1|}}}|
}}{{Languages/Lang|cho|{{{1|}}}|
}}{{Languages/Lang|sei|{{{1|}}}|
}}{{Languages/Lang|co|{{{1|}}}|
}}{{Languages/Lang|cy|{{{1|}}}|
}}{{Languages/Lang|da|{{{1|}}}|
}}{{Languages/Lang|se|{{{1|}}}|
}}{{Languages/Lang|pdc|{{{1|}}}|
}}{{Languages/Lang|de|{{{1|}}}|
}}{{Languages/Lang|de-formal|{{{1|}}}|
}}{{Languages/Lang|nv|{{{1|}}}|
}}{{Languages/Lang|dsb|{{{1|}}}|
}}{{Languages/Lang|na|{{{1|}}}|
}}{{Languages/Lang|dtp|{{{1|}}}|
}}{{Languages/Lang|mh|{{{1|}}}|
}}{{Languages/Lang|et|{{{1|}}}|
}}{{Languages/Lang|egl|{{{1|}}}|
}}{{Languages/Lang|eml|{{{1|}}}|
}}{{Languages/Lang|en|{{{1|}}}|
}}{{Languages/Lang|es|{{{1|}}}|
}}{{Languages/Lang|es-formal|{{{1|}}}|
}}{{Languages/Lang|es-419|{{{1|}}}|
}}{{Languages/Lang|eo|{{{1|}}}|
}}{{Languages/Lang|ext|{{{1|}}}|
}}{{Languages/Lang|eu|{{{1|}}}|
}}{{Languages/Lang|ee|{{{1|}}}|
}}{{Languages/Lang|hif|{{{1|}}}|
}}{{Languages/Lang|hif-latn|{{{1|}}}|
}}{{Languages/Lang|fo|{{{1|}}}|
}}{{Languages/Lang|fr|{{{1|}}}|
}}{{Languages/Lang|frc|{{{1|}}}|
}}{{Languages/Lang|fy|{{{1|}}}|
}}{{Languages/Lang|ff|{{{1|}}}|
}}{{Languages/Lang|fur|{{{1|}}}|
}}{{Languages/Lang|gv|{{{1|}}}|
}}{{Languages/Lang|ga|{{{1|}}}|
}}{{Languages/Lang|sm|{{{1|}}}|
}}{{Languages/Lang|gag|{{{1|}}}|
}}{{Languages/Lang|gd|{{{1|}}}|
}}{{Languages/Lang|gl|{{{1|}}}|
}}{{Languages/Lang|aln|{{{1|}}}|
}}{{Languages/Lang|ki|{{{1|}}}|
}}{{Languages/Lang|gom-latn|{{{1|}}}|
}}{{Languages/Lang|ha|{{{1|}}}|
}}{{Languages/Lang|haw|{{{1|}}}|
}}{{Languages/Lang|ho|{{{1|}}}|
}}{{Languages/Lang|hsb|{{{1|}}}|
}}{{Languages/Lang|hr|{{{1|}}}|
}}{{Languages/Lang|hrx|{{{1|}}}|
}}{{Languages/Lang|io|{{{1|}}}|
}}{{Languages/Lang|ig|{{{1|}}}|
}}{{Languages/Lang|ilo|{{{1|}}}|
}}{{Languages/Lang|hil|{{{1|}}}|
}}{{Languages/Lang|ia|{{{1|}}}|
}}{{Languages/Lang|ie|{{{1|}}}|
}}{{Languages/Lang|ike-latn|{{{1|}}}|
}}{{Languages/Lang|ik|{{{1|}}}|
}}{{Languages/Lang|bto|{{{1|}}}|
}}{{Languages/Lang|zu|{{{1|}}}|
}}{{Languages/Lang|xh|{{{1|}}}|
}}{{Languages/Lang|is|{{{1|}}}|
}}{{Languages/Lang|it|{{{1|}}}|
}}{{Languages/Lang|jv|{{{1|}}}|
}}{{Languages/Lang|rmf|{{{1|}}}|
}}{{Languages/Lang|smj|{{{1|}}}|
}}{{Languages/Lang|jut|{{{1|}}}|
}}{{Languages/Lang|kbp|{{{1|}}}|
}}{{Languages/Lang|kea|{{{1|}}}|
}}{{Languages/Lang|kl|{{{1|}}}|
}}{{Languages/Lang|pam|{{{1|}}}|
}}{{Languages/Lang|kr|{{{1|}}}|
}}{{Languages/Lang|krl|{{{1|}}}|
}}{{Languages/Lang|csb|{{{1|}}}|
}}{{Languages/Lang|kw|{{{1|}}}|
}}{{Languages/Lang|rw|{{{1|}}}|
}}{{Languages/Lang|krj|{{{1|}}}|
}}{{Languages/Lang|rn|{{{1|}}}|
}}{{Languages/Lang|sw|{{{1|}}}|
}}{{Languages/Lang|kiu|{{{1|}}}|
}}{{Languages/Lang|kg|{{{1|}}}|
}}{{Languages/Lang|avk|{{{1|}}}|
}}{{Languages/Lang|ses|{{{1|}}}|
}}{{Languages/Lang|ht|{{{1|}}}|
}}{{Languages/Lang|kri|{{{1|}}}|
}}{{Languages/Lang|gcr|{{{1|}}}|
}}{{Languages/Lang|ku|{{{1|}}}|
}}{{Languages/Lang|ku-latn|{{{1|}}}|
}}{{Languages/Lang|fkv|{{{1|}}}|
}}{{Languages/Lang|kj|{{{1|}}}|
}}{{Languages/Lang|lad|{{{1|}}}|
}}{{Languages/Lang|jbo|{{{1|}}}|
}}{{Languages/Lang|lld|{{{1|}}}|
}}{{Languages/Lang|ltg|{{{1|}}}|
}}{{Languages/Lang|la|{{{1|}}}|
}}{{Languages/Lang|lv|{{{1|}}}|
}}{{Languages/Lang|lzz|{{{1|}}}|
}}{{Languages/Lang|to|{{{1|}}}|
}}{{Languages/Lang|lb|{{{1|}}}|
}}{{Languages/Lang|nia|{{{1|}}}|
}}{{Languages/Lang|lt|{{{1|}}}|
}}{{Languages/Lang|lij|{{{1|}}}|
}}{{Languages/Lang|li|{{{1|}}}|
}}{{Languages/Lang|ln|{{{1|}}}|
}}{{Languages/Lang|lfn|{{{1|}}}|
}}{{Languages/Lang|liv|{{{1|}}}|
}}{{Languages/Lang|olo|{{{1|}}}|
}}{{Languages/Lang|lg|{{{1|}}}|
}}{{Languages/Lang|lmo|{{{1|}}}|
}}{{Languages/Lang|mad|{{{1|}}}|
}}{{Languages/Lang|hu|{{{1|}}}|
}}{{Languages/Lang|hu-formal|{{{1|}}}|
}}{{Languages/Lang|vmf|{{{1|}}}|
}}{{Languages/Lang|mg|{{{1|}}}|
}}{{Languages/Lang|mt|{{{1|}}}|
}}{{Languages/Lang|mi|{{{1|}}}|
}}{{Languages/Lang|mrh|{{{1|}}}|
}}{{Languages/Lang|srq|{{{1|}}}|
}}{{Languages/Lang|arn|{{{1|}}}|
}}{{Languages/Lang|fit|{{{1|}}}|
}}{{Languages/Lang|min|{{{1|}}}|
}}{{Languages/Lang|cdo|{{{1|}}}|
}}{{Languages/Lang|mwl|{{{1|}}}|
}}{{Languages/Lang|lus|{{{1|}}}|
}}{{Languages/Lang|mus|{{{1|}}}|
}}{{Languages/Lang|fj|{{{1|}}}|
}}{{Languages/Lang|nah|{{{1|}}}|
}}{{Languages/Lang|nap|{{{1|}}}|
}}{{Languages/Lang|nl|{{{1|}}}|
}}{{Languages/Lang|nl-informal|{{{1|}}}|
}}{{Languages/Lang|nds-nl|{{{1|}}}|
}}{{Languages/Lang|cr|{{{1|}}}|
}}{{Languages/Lang|niu|{{{1|}}}|
}}{{Languages/Lang|frr|{{{1|}}}|
}}{{Languages/Lang|nb|{{{1|}}}|
}}{{Languages/Lang|pih|{{{1|}}}|
}}{{Languages/Lang|nn|{{{1|}}}|
}}{{Languages/Lang|nrm|{{{1|}}}|
}}{{Languages/Lang|nov|{{{1|}}}|
}}{{Languages/Lang|nys|{{{1|}}}|
}}{{Languages/Lang|uz-latn|{{{1|}}}|
}}{{Languages/Lang|uz|{{{1|}}}|
}}{{Languages/Lang|oc|{{{1|}}}|
}}{{Languages/Lang|om|{{{1|}}}|
}}{{Languages/Lang|ng|{{{1|}}}|
}}{{Languages/Lang|de-at|{{{1|}}}|
}}{{Languages/Lang|hz|{{{1|}}}|
}}{{Languages/Lang|pfl|{{{1|}}}|
}}{{Languages/Lang|pag|{{{1|}}}|
}}{{Languages/Lang|ami|{{{1|}}}|
}}{{Languages/Lang|pap|{{{1|}}}|
}}{{Languages/Lang|pcd|{{{1|}}}|
}}{{Languages/Lang|jam|{{{1|}}}|
}}{{Languages/Lang|pms|{{{1|}}}|
}}{{Languages/Lang|nds|{{{1|}}}|
}}{{Languages/Lang|pdt|{{{1|}}}|
}}{{Languages/Lang|pl|{{{1|}}}|
}}{{Languages/Lang|pt|{{{1|}}}|
}}{{Languages/Lang|pt-br|{{{1|}}}|
}}{{Languages/Lang|prg|{{{1|}}}|
}}{{Languages/Lang|aa|{{{1|}}}|
}}{{Languages/Lang|kaa|{{{1|}}}|
}}{{Languages/Lang|kk-latn|{{{1|}}}|
}}{{Languages/Lang|kk-tr|{{{1|}}}|
}}{{Languages/Lang|crh|{{{1|}}}|
}}{{Languages/Lang|crh-latn|{{{1|}}}|
}}{{Languages/Lang|ty|{{{1|}}}|
}}{{Languages/Lang|ksh|{{{1|}}}|
}}{{Languages/Lang|rgn|{{{1|}}}|
}}{{Languages/Lang|ro|{{{1|}}}|
}}{{Languages/Lang|rmy|{{{1|}}}|
}}{{Languages/Lang|rm|{{{1|}}}|
}}{{Languages/Lang|qug|{{{1|}}}|
}}{{Languages/Lang|qu|{{{1|}}}|
}}{{Languages/Lang|sms|{{{1|}}}|
}}{{Languages/Lang|xsy|{{{1|}}}|
}}{{Languages/Lang|szy|{{{1|}}}|
}}{{Languages/Lang|sg|{{{1|}}}|
}}{{Languages/Lang|sc|{{{1|}}}|
}}{{Languages/Lang|sdc|{{{1|}}}|
}}{{Languages/Lang|sli|{{{1|}}}|
}}{{Languages/Lang|de-ch|{{{1|}}}|
}}{{Languages/Lang|sco|{{{1|}}}|
}}{{Languages/Lang|trv|{{{1|}}}|
}}{{Languages/Lang|stq|{{{1|}}}|
}}{{Languages/Lang|st|{{{1|}}}|
}}{{Languages/Lang|nso|{{{1|}}}|
}}{{Languages/Lang|tn|{{{1|}}}|
}}{{Languages/Lang|sq|{{{1|}}}|
}}{{Languages/Lang|scn|{{{1|}}}|
}}{{Languages/Lang|simple|{{{1|}}}|
}}{{Languages/Lang|loz|{{{1|}}}|
}}{{Languages/Lang|ss|{{{1|}}}|
}}{{Languages/Lang|sk|{{{1|}}}|
}}{{Languages/Lang|sl|{{{1|}}}|
}}{{Languages/Lang|srn|{{{1|}}}|
}}{{Languages/Lang|szl|{{{1|}}}|
}}{{Languages/Lang|so|{{{1|}}}|
}}{{Languages/Lang|sr-el|{{{1|}}}|
}}{{Languages/Lang|sh|{{{1|}}}|
}}{{Languages/Lang|su|{{{1|}}}|
}}{{Languages/Lang|sv|{{{1|}}}|
}}{{Languages/Lang|fi|{{{1|}}}|
}}{{Languages/Lang|shy-latn|{{{1|}}}|
}}{{Languages/Lang|tl|{{{1|}}}|
}}{{Languages/Lang|kab|{{{1|}}}|
}}{{Languages/Lang|roa-tara|{{{1|}}}|
}}{{Languages/Lang|rif|{{{1|}}}|
}}{{Languages/Lang|shi-latn|{{{1|}}}|
}}{{Languages/Lang|shi|{{{1|}}}|
}}{{Languages/Lang|tt-latn|{{{1|}}}|
}}{{Languages/Lang|tay|{{{1|}}}|
}}{{Languages/Lang|tet|{{{1|}}}|
}}{{Languages/Lang|din|{{{1|}}}|
}}{{Languages/Lang|vi|{{{1|}}}|
}}{{Languages/Lang|tpi|{{{1|}}}|
}}{{Languages/Lang|tg-latn|{{{1|}}}|
}}{{Languages/Lang|tly|{{{1|}}}|
}}{{Languages/Lang|chy|{{{1|}}}|
}}{{Languages/Lang|ve|{{{1|}}}|
}}{{Languages/Lang|aeb-latn|{{{1|}}}|
}}{{Languages/Lang|tr|{{{1|}}}|
}}{{Languages/Lang|tk|{{{1|}}}|
}}{{Languages/Lang|tru|{{{1|}}}|
}}{{Languages/Lang|tw|{{{1|}}}|
}}{{Languages/Lang|sju|{{{1|}}}|
}}{{Languages/Lang|ug-latn|{{{1|}}}|
}}{{Languages/Lang|vot|{{{1|}}}|
}}{{Languages/Lang|za|{{{1|}}}|
}}{{Languages/Lang|vec|{{{1|}}}|
}}{{Languages/Lang|vep|{{{1|}}}|
}}{{Languages/Lang|ruq|{{{1|}}}|
}}{{Languages/Lang|ruq-latn|{{{1|}}}|
}}{{Languages/Lang|vo|{{{1|}}}|
}}{{Languages/Lang|vro|{{{1|}}}|
}}{{Languages/Lang|fiu-vro|{{{1|}}}|
}}{{Languages/Lang|wa|{{{1|}}}|
}}{{Languages/Lang|vls|{{{1|}}}|
}}{{Languages/Lang|war|{{{1|}}}|
}}{{Languages/Lang|wo|{{{1|}}}|
}}{{Languages/Lang|ts|{{{1|}}}|
}}{{Languages/Lang|yo|{{{1|}}}|
}}{{Languages/Lang|diq|{{{1|}}}|
}}{{Languages/Lang|sgs|{{{1|}}}|
}}{{Languages/Lang|zea|{{{1|}}}|
}}{{Languages/Lang|bat-smg|{{{1|}}}|
}}{{Languages/Lang|grc|{{{1|}}}|
}}{{Languages/Lang|el|{{{1|}}}|
}}{{Languages/Lang|pnt|{{{1|}}}|
}}{{Languages/Lang|av|{{{1|}}}|
}}{{Languages/Lang|ady|{{{1|}}}|
}}{{Languages/Lang|ady-cyrl|{{{1|}}}|
}}{{Languages/Lang|kbd-cyrl|{{{1|}}}|
}}{{Languages/Lang|kbd|{{{1|}}}|
}}{{Languages/Lang|ab|{{{1|}}}|
}}{{Languages/Lang|ba|{{{1|}}}|
}}{{Languages/Lang|be|{{{1|}}}|
}}{{Languages/Lang|be-tarask|{{{1|}}}|
}}{{Languages/Lang|be-x-old|{{{1|}}}|
}}{{Languages/Lang|bxr|{{{1|}}}|
}}{{Languages/Lang|bg|{{{1|}}}|
}}{{Languages/Lang|ruq-cyrl|{{{1|}}}|
}}{{Languages/Lang|inh|{{{1|}}}|
}}{{Languages/Lang|os|{{{1|}}}|
}}{{Languages/Lang|sjd|{{{1|}}}|
}}{{Languages/Lang|kv|{{{1|}}}|
}}{{Languages/Lang|crh-cyrl|{{{1|}}}|
}}{{Languages/Lang|krc|{{{1|}}}|
}}{{Languages/Lang|kum|{{{1|}}}|
}}{{Languages/Lang|ky|{{{1|}}}|
}}{{Languages/Lang|mrj|{{{1|}}}|
}}{{Languages/Lang|kk|{{{1|}}}|
}}{{Languages/Lang|kk-cyrl|{{{1|}}}|
}}{{Languages/Lang|kk-kz|{{{1|}}}|
}}{{Languages/Lang|lbe|{{{1|}}}|
}}{{Languages/Lang|lez|{{{1|}}}|
}}{{Languages/Lang|mk|{{{1|}}}|
}}{{Languages/Lang|mdf|{{{1|}}}|
}}{{Languages/Lang|mo|{{{1|}}}|
}}{{Languages/Lang|mn|{{{1|}}}|
}}{{Languages/Lang|mhr|{{{1|}}}|
}}{{Languages/Lang|ce|{{{1|}}}|
}}{{Languages/Lang|koi|{{{1|}}}|
}}{{Languages/Lang|rue|{{{1|}}}|
}}{{Languages/Lang|ru|{{{1|}}}|
}}{{Languages/Lang|sah|{{{1|}}}|
}}{{Languages/Lang|sty|{{{1|}}}|
}}{{Languages/Lang|cu|{{{1|}}}|
}}{{Languages/Lang|sr-ec|{{{1|}}}|
}}{{Languages/Lang|sr|{{{1|}}}|
}}{{Languages/Lang|tt-cyrl|{{{1|}}}|
}}{{Languages/Lang|tt|{{{1|}}}|
}}{{Languages/Lang|tly|{{{1|}}}|
}}{{Languages/Lang|tg-cyrl|{{{1|}}}|
}}{{Languages/Lang|tg|{{{1|}}}|
}}{{Languages/Lang|alt|{{{1|}}}|
}}{{Languages/Lang|tyv|{{{1|}}}|
}}{{Languages/Lang|udm|{{{1|}}}|
}}{{Languages/Lang|uz-cyrl|{{{1|}}}|
}}{{Languages/Lang|uk|{{{1|}}}|
}}{{Languages/Lang|xal|{{{1|}}}|
}}{{Languages/Lang|cv|{{{1|}}}|
}}{{Languages/Lang|myv|{{{1|}}}|
}}{{Languages/Lang|xmf|{{{1|}}}|
}}{{Languages/Lang|ka|{{{1|}}}|
}}{{Languages/Lang|hyw|{{{1|}}}|
}}{{Languages/Lang|hy|{{{1|}}}|
}}{{Languages/Lang|anp|{{{1|}}}|
}}{{Languages/Lang|awa|{{{1|}}}|
}}{{Languages/Lang|ks-deva|{{{1|}}}|
}}{{Languages/Lang|ks|{{{1|}}}|
}}{{Languages/Lang|gom-deva|{{{1|}}}|
}}{{Languages/Lang|gom|{{{1|}}}|
}}{{Languages/Lang|dty|{{{1|}}}|
}}{{Languages/Lang|new|{{{1|}}}|
}}{{Languages/Lang|ne|{{{1|}}}|
}}{{Languages/Lang|pi|{{{1|}}}|
}}{{Languages/Lang|bho|{{{1|}}}|
}}{{Languages/Lang|bh|{{{1|}}}|
}}{{Languages/Lang|mr|{{{1|}}}|
}}{{Languages/Lang|rwr|{{{1|}}}|
}}{{Languages/Lang|mai|{{{1|}}}|
}}{{Languages/Lang|sa|{{{1|}}}|
}}{{Languages/Lang|hi|{{{1|}}}|
}}{{Languages/Lang|as|{{{1|}}}|
}}{{Languages/Lang|bn|{{{1|}}}|
}}{{Languages/Lang|bpy|{{{1|}}}|
}}{{Languages/Lang|pa|{{{1|}}}|
}}{{Languages/Lang|or|{{{1|}}}|
}}{{Languages/Lang|gu|{{{1|}}}|
}}{{Languages/Lang|ta|{{{1|}}}|
}}{{Languages/Lang|te|{{{1|}}}|
}}{{Languages/Lang|kn|{{{1|}}}|
}}{{Languages/Lang|tcy|{{{1|}}}|
}}{{Languages/Lang|ml|{{{1|}}}|
}}{{Languages/Lang|si|{{{1|}}}|
}}{{Languages/Lang|mni|{{{1|}}}|
}}{{Languages/Lang|th|{{{1|}}}|
}}{{Languages/Lang|lo|{{{1|}}}|
}}{{Languages/Lang|dz|{{{1|}}}|
}}{{Languages/Lang|bo|{{{1|}}}|
}}{{Languages/Lang|kjp|{{{1|}}}|
}}{{Languages/Lang|bug|{{{1|}}}|
}}{{Languages/Lang|shn|{{{1|}}}|
}}{{Languages/Lang|mnw|{{{1|}}}|
}}{{Languages/Lang|my|{{{1|}}}|
}}{{Languages/Lang|km|{{{1|}}}|
}}{{Languages/Lang|nod|{{{1|}}}|
}}{{Languages/Lang|ban-bali|{{{1|}}}|
}}{{Languages/Lang|sat|{{{1|}}}|
}}{{Languages/Lang|chr|{{{1|}}}|
}}{{Languages/Lang|ike-cans|{{{1|}}}|
}}{{Languages/Lang|iu|{{{1|}}}|
}}{{Languages/Lang|got|{{{1|}}}|
}}{{Languages/Lang|tzm|{{{1|}}}|
}}{{Languages/Lang|zgh|{{{1|}}}|
}}{{Languages/Lang|shi-tfng|{{{1|}}}|
}}{{Languages/Lang|ti|{{{1|}}}|
}}{{Languages/Lang|am|{{{1|}}}|
}}{{Languages/Lang|ii|{{{1|}}}|
}}{{Languages/Lang|ko-kp|{{{1|}}}|
}}{{Languages/Lang|ko|{{{1|}}}|
}}{{Languages/Lang|ja|{{{1|}}}|
}}{{Languages/Lang|zh|{{{1|}}}|
}}{{Languages/Lang|zh-tw|{{{1|}}}|
}}{{Languages/Lang|zh-cn|{{{1|}}}|
}}{{Languages/Lang|zh-sg|{{{1|}}}|
}}{{Languages/Lang|zh-mo|{{{1|}}}|
}}{{Languages/Lang|zh-hans|{{{1|}}}|
}}{{Languages/Lang|zh-hant|{{{1|}}}|
}}{{Languages/Lang|zh-hk|{{{1|}}}|
}}{{Languages/Lang|zh-my|{{{1|}}}|
}}{{Languages/Lang|wuu|{{{1|}}}|
}}{{Languages/Lang|hak|{{{1|}}}|
}}{{Languages/Lang|lzh|{{{1|}}}|
}}{{Languages/Lang|zh-classical|{{{1|}}}|
}}{{Languages/Lang|zh-yue|{{{1|}}}|
}}{{Languages/Lang|yue|{{{1|}}}|
}}{{Languages/Lang|gan|{{{1|}}}|
}}{{Languages/Lang|gan-hant|{{{1|}}}|
}}{{Languages/Lang|gan-hans|{{{1|}}}|
}}{{Languages/Lang|yi|{{{1|}}}|
}}{{Languages/Lang|he|{{{1|}}}|
}}{{Languages/Lang|ug-arab|{{{1|}}}|
}}{{Languages/Lang|ar|{{{1|}}}|
}}{{Languages/Lang|ug|{{{1|}}}|
}}{{Languages/Lang|ur|{{{1|}}}|
}}{{Languages/Lang|ary|{{{1|}}}|
}}{{Languages/Lang|bqi|{{{1|}}}|
}}{{Languages/Lang|ps|{{{1|}}}|
}}{{Languages/Lang|pnb|{{{1|}}}|
}}{{Languages/Lang|aeb-arab|{{{1|}}}|
}}{{Languages/Lang|aeb|{{{1|}}}|
}}{{Languages/Lang|azb|{{{1|}}}|
}}{{Languages/Lang|arq|{{{1|}}}|
}}{{Languages/Lang|sd|{{{1|}}}|
}}{{Languages/Lang|bcc|{{{1|}}}|
}}{{Languages/Lang|bgn|{{{1|}}}|
}}{{Languages/Lang|skr-arab|{{{1|}}}|
}}{{Languages/Lang|skr|{{{1|}}}|
}}{{Languages/Lang|fa|{{{1|}}}|
}}{{Languages/Lang|kk-arab|{{{1|}}}|
}}{{Languages/Lang|kk-cn|{{{1|}}}|
}}{{Languages/Lang|ku-arab|{{{1|}}}|
}}{{Languages/Lang|ks-arab|{{{1|}}}|
}}{{Languages/Lang|khw|{{{1|}}}|
}}{{Languages/Lang|ckb|{{{1|}}}|
}}{{Languages/Lang|sdh|{{{1|}}}|
}}{{Languages/Lang|glk|{{{1|}}}|
}}{{Languages/Lang|luz|{{{1|}}}|
}}{{Languages/Lang|ota|{{{1|}}}|
}}{{Languages/Lang|lki|{{{1|}}}|
}}{{Languages/Lang|lrc|{{{1|}}}|
}}{{Languages/Lang|mzn|{{{1|}}}|
}}{{Languages/Lang|arz|{{{1|}}}|
}}{{Languages/Lang|arc|{{{1|}}}|
}}{{Languages/Lang|dv|{{{1|}}}|
}}{{Languages/Lang|nqo|{{{1|}}}|
clear={{{clear|both}}}}}}}</includeonly><noinclude>
{{Documentation}}
[[Category:Language link templates| ]]
[[Category:Translation]]
</noinclude>
28e85d00580c67cc8d5aa506aab59e2ef082c90d
Template:Nmbox
10
46
78
2024-02-24T18:05:14Z
Translation-category>MusikBot II
0
Changed protection settings for "[[Template:Nmbox]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
wikitext
text/x-wiki
<templatestyles src="Template:Nmbox/styles.css" />
<div class="nmbox noprint">{{#if: {{{image|}}}{{{header|}}}
|<div class="nmbox-header">{{#if: {{{image|}}}|<div class="nmbox-image">{{{image|}}}</div>}}{{{header|}}}
</div>}}
{{#if:{{{text|}}}|<div class="nmbox-text">{{{text|}}}</div>}}
</div><noinclude>{{documentation}}</noinclude>
e557c052be3962967d3c2ad6a2f5a99a2ca4a8a4
Template:Nmbox/styles.css
10
47
80
2024-02-24T18:05:14Z
Translation-category>MusikBot II
0
Changed protection settings for "[[Template:Nmbox/styles.css]]": High-risk template or module ([[User:MusikBot II/TemplateProtector|more info]]) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))
text
text/plain
.nmbox {
clear: both;
background: #F6F9ED;
border: 1px solid #AAA;
box-sizing: border-box;
margin: 2px 0;
padding: 0;
}
.nmbox * {
box-sizing: border-box;
}
.nmbox-header {
background: #EEF3E2;
padding: 4px 0.5em;
font-weight: bold;
text-align: center;
white-space: nowrap
}
.nmbox-image {
display: inline-block;
}
.nmbox-text {
border-top: 1px solid #AAA;
width: 100%;
padding: 4px 0.5em;
}
@media screen and (min-width: 768px) {
.nmbox-header {
display: table-cell;
border-right: 1px solid #AAA;
width: 1%;
}
.nmbox-text {
border-top: none;
display: table-cell;
}
}
24c6a01b07b9d9cf44e7f110e8173db233e986e8
Module:Sprite
828
5
8
2024-04-02T06:57:30Z
crafting>StuckInAHypickle
0
End of April Fools
Scribunto
text/plain
local p = {}
local CurrentFrame = mw.getCurrentFrame()
function p.base( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = CurrentFrame
end
local data = args.data and mw.loadData( 'Module:' .. args.data ) or {}
local settings = data.settings
-- Default settings
local default = {
scale = 1,
sheetsize = 256,
size = 16,
pos = 1,
align = 'text-top'
}
local defaultStyle = default
if settings then
if not settings.stylesheet then
-- Make a separate clone of the current default settings
defaultStyle = mw.clone( default )
end
for k, v in pairs( settings ) do
default[k] = v
end
end
local setting = function( arg )
return args[arg] or default[arg]
end
local sprite = mw.html.create( 'span' ):addClass( 'sprite' )
-- mw.html's css method performs very slow escaping, which doubles the time it takes
-- to run, so we'll construct the styles manually, and put them in the cssText
-- method, which only does html escaping (which isn't slow)
local styles = {}
if not setting( 'nourl' ) and setting( 'url' ) then
styles[#styles + 1] = 'background-image:' .. ( setting( 'url' ).url or setting( 'url' ) )
end
if setting( 'stylesheet' ) then
sprite:addClass(
setting( 'classname' ) or
mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite'
)
elseif not setting( 'url' ) then
styles[#styles + 1] = 'background-image:' .. p.getUrl(
setting( 'image' ) or setting( 'name' ) .. 'Sprite.png'
).url
end
local class = setting( 'class' )
if class then
sprite:addClass( class )
end
local width = setting( 'width' ) or setting( 'size' )
local height = setting( 'height' ) or setting( 'size' )
local sheetWidth = setting( 'sheetsize' )
local tiles = sheetWidth / width
local pos = setting( 'pos' ) - 1
local scale = setting( 'scale' )
local autoScale = setting( 'autoscale' )
if pos then
local left = pos % tiles * width * scale
local top = math.floor( pos / tiles ) * height * scale
styles[#styles + 1] = 'background-position:-' .. left .. 'px -' .. top .. 'px'
end
if not autoScale and scale ~= defaultStyle.scale then
styles[#styles + 1] = 'background-size:' .. sheetWidth * scale .. 'px auto'
end
if height ~= defaultStyle.size or width ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then
styles[#styles + 1] = 'height:' .. height * scale .. 'px'
styles[#styles + 1] = 'width:' .. width * scale .. 'px'
end
local align = setting( 'align' )
if align ~= defaultStyle.align then
styles[#styles + 1] = 'vertical-align:' .. align
end
styles[#styles + 1] = setting( 'css' )
sprite:cssText( table.concat( styles, ';' ) )
local text = setting( 'text' )
local root
local spriteText
if text then
if not args['wrap'] then
root = mw.html.create( 'span' ):addClass( 'nowrap' )
end
spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text )
end
local title = setting( 'title' )
if title then
( root or sprite ):attr( 'title', title )
end
if not root then
root = mw.html.create( '' )
end
root:node( sprite )
if spriteText then
root:node( spriteText )
end
local link = setting( 'link' ) or ''
if link ~= '' and mw.ustring.lower( link ) ~= 'none' then
-- External link
if link:find( '//' ) then
return '[' .. link .. ' ' .. tostring( root ) .. ']'
end
-- Internal link
local linkPrefix = setting( 'linkprefix' ) or ''
return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]'
end
return tostring( root )
end
function p.sprite( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = CurrentFrame
end
local data = args.data and mw.loadData( 'Module:' .. args.data ) or {}
local categories = {}
local idData = args.iddata
if not idData then
local name = args.name or data.settings.name
local id = mw.text.trim( tostring( args[1] or '' ) )
idData = data.ids[id] or data.ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )]
end
local title = mw.title.getCurrentTitle()
-- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces
local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' )
if idData then
if idData.deprecated then
args.class = ( args.class or '' ) .. ' sprite-deprecated'
if not disallowCats then
categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages using deprecated sprite names', project = 0 } }
end
end
args.pos = idData.pos
elseif not disallowCats then
categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages with missing sprites', project = 0 } }
end
return p.base( args ), table.concat( categories )
end
function p.link( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
end
local link = args[1]
if args[1] and not args.id then
link = args[1]:match( '^(.-)%+' ) or args[1]
end
local text
if not args.notext then
text = args.text or args[2] or link
end
args[1] = args.id or args[1]
args.link = args.link or link
args.text = text
return p.sprite( args )
end
function p.getUrl( image, query, classname )
local f = CurrentFrame
local t = {
url = f:expandTemplate{
title = 'FileUrl',
args = { image, query = query }
},
}
if classname and classname ~= '' then
t.style = f:expandTemplate{
title = 'FileUrlStyle',
args = { classname, image, query = query }
}
end
return t
end
function p.getParsedUrlStyle( f )
local args = f:getParent().args
local module = args[1]
return require( 'Module:' .. module ).settings.url.style
end
function p.doc( f )
local args = f
if f == CurrentFrame then
args = f.args
else
f = CurrentFrame
end
local dataPage = mw.text.trim( args[1] )
local data = mw.loadData( 'Module:' .. dataPage )
local getProtection = function( title, action, extra )
local protections = { 'edit' }
if extra then
protections[#protections + 1] = extra
end
local addProtection = function( protection )
if protection == 'autoconfirmed' then
protection = 'editsemiprotected'
elseif protection == 'sysop' then
protection = 'editprotected'
end
protections[#protections + 1] = protection
end
local direct = title.protectionLevels[action] or {}
for _, protection in ipairs( direct ) do
addProtection( protection )
end
local cascading = title.cascadingProtection.restrictions[action] or {}
if #cascading > 0 then
protections[#protections + 1] = 'protect'
end
for _, protection in ipairs( cascading ) do
addProtection( protection )
end
return table.concat( protections, ',' )
end
local spriteStyle = ''
if data.settings.url and data.settings.url.style then
spriteStyle = data.settings.url.style
end
local dataTitle = mw.title.new( 'Module:' .. dataPage )
-- Temporary until this is updated
local classname = ''
if data.settings.stylesheet then
classname = data.settings.classname or
mw.ustring.lower( data.settings.name:gsub( ' ', '-' ) ) .. '-sprite'
end
local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png'
local spriteTitle = mw.title.new( 'File:' .. spritesheet )
local dataProtection = getProtection( dataTitle, 'edit' )
local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' )
local body = mw.html.create( 'div' ):attr( {
id = 'spritedoc',
['data-dataprotection'] = dataProtection,
['data-datatimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', 'Module:' .. dataPage ),
['data-datapage'] = 'Module:' .. dataPage,
['data-spritesheet'] = spritesheet,
['data-spriteprotection'] = spriteProtection,
['data-urlfunc'] = "require( [[Module:Sprite]] ).getUrl( '" .. spritesheet .. "', '$1', '" .. classname .. "' )",
['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ),
['data-settings'] = mw.text.jsonEncode( data.settings ),
} )
local sections = {}
for _, sectionData in ipairs( data.sections or { name = 'Uncategorized' } ) do
local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id )
sectionTag:tag( 'h3' ):wikitext( sectionData.name )
sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) }
end
local keyedData = {}
local i = 1
for name, idData in pairs( data.ids ) do
keyedData[i] = {
sortKey = mw.ustring.lower( name ),
name = name,
data = idData
}
i = i + 1
end
table.sort( keyedData, function( a, b )
return a.sortKey < b.sortKey
end )
for _, data in ipairs( keyedData ) do
local idData = data.data
local pos = idData.pos
local section = sections[idData.section]
local names = section[pos]
if not names then
local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos )
box:tag( 'div' ):addClass( 'spritedoc-image' )
:wikitext( p.base{ pos = pos, data = dataPage, nourl = spriteStyle ~= '' } )
names = box:tag( 'ul' ):addClass( 'spritedoc-names' )
section[pos] = names
end
local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' )
local codeElem = nameElem:tag( 'code' ):wikitext( data.name )
if idData.deprecated then
codeElem:addClass( 'spritedoc-deprecated' )
end
names:wikitext( tostring( nameElem ) )
end
if args.refresh then
return '', '', tostring( body )
end
local styles = f:callParserFunction( '#widget:SpriteDoc.css' )
return styles, spriteStyle, tostring( body )
end
return p
166303957bd087cb90e463787612899b203fc5bb
9
8
2024-04-28T15:47:50Z
Axxyyy
2
1 revision imported
Scribunto
text/plain
local p = {}
local CurrentFrame = mw.getCurrentFrame()
function p.base( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = CurrentFrame
end
local data = args.data and mw.loadData( 'Module:' .. args.data ) or {}
local settings = data.settings
-- Default settings
local default = {
scale = 1,
sheetsize = 256,
size = 16,
pos = 1,
align = 'text-top'
}
local defaultStyle = default
if settings then
if not settings.stylesheet then
-- Make a separate clone of the current default settings
defaultStyle = mw.clone( default )
end
for k, v in pairs( settings ) do
default[k] = v
end
end
local setting = function( arg )
return args[arg] or default[arg]
end
local sprite = mw.html.create( 'span' ):addClass( 'sprite' )
-- mw.html's css method performs very slow escaping, which doubles the time it takes
-- to run, so we'll construct the styles manually, and put them in the cssText
-- method, which only does html escaping (which isn't slow)
local styles = {}
if not setting( 'nourl' ) and setting( 'url' ) then
styles[#styles + 1] = 'background-image:' .. ( setting( 'url' ).url or setting( 'url' ) )
end
if setting( 'stylesheet' ) then
sprite:addClass(
setting( 'classname' ) or
mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite'
)
elseif not setting( 'url' ) then
styles[#styles + 1] = 'background-image:' .. p.getUrl(
setting( 'image' ) or setting( 'name' ) .. 'Sprite.png'
).url
end
local class = setting( 'class' )
if class then
sprite:addClass( class )
end
local width = setting( 'width' ) or setting( 'size' )
local height = setting( 'height' ) or setting( 'size' )
local sheetWidth = setting( 'sheetsize' )
local tiles = sheetWidth / width
local pos = setting( 'pos' ) - 1
local scale = setting( 'scale' )
local autoScale = setting( 'autoscale' )
if pos then
local left = pos % tiles * width * scale
local top = math.floor( pos / tiles ) * height * scale
styles[#styles + 1] = 'background-position:-' .. left .. 'px -' .. top .. 'px'
end
if not autoScale and scale ~= defaultStyle.scale then
styles[#styles + 1] = 'background-size:' .. sheetWidth * scale .. 'px auto'
end
if height ~= defaultStyle.size or width ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then
styles[#styles + 1] = 'height:' .. height * scale .. 'px'
styles[#styles + 1] = 'width:' .. width * scale .. 'px'
end
local align = setting( 'align' )
if align ~= defaultStyle.align then
styles[#styles + 1] = 'vertical-align:' .. align
end
styles[#styles + 1] = setting( 'css' )
sprite:cssText( table.concat( styles, ';' ) )
local text = setting( 'text' )
local root
local spriteText
if text then
if not args['wrap'] then
root = mw.html.create( 'span' ):addClass( 'nowrap' )
end
spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text )
end
local title = setting( 'title' )
if title then
( root or sprite ):attr( 'title', title )
end
if not root then
root = mw.html.create( '' )
end
root:node( sprite )
if spriteText then
root:node( spriteText )
end
local link = setting( 'link' ) or ''
if link ~= '' and mw.ustring.lower( link ) ~= 'none' then
-- External link
if link:find( '//' ) then
return '[' .. link .. ' ' .. tostring( root ) .. ']'
end
-- Internal link
local linkPrefix = setting( 'linkprefix' ) or ''
return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]'
end
return tostring( root )
end
function p.sprite( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = CurrentFrame
end
local data = args.data and mw.loadData( 'Module:' .. args.data ) or {}
local categories = {}
local idData = args.iddata
if not idData then
local name = args.name or data.settings.name
local id = mw.text.trim( tostring( args[1] or '' ) )
idData = data.ids[id] or data.ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )]
end
local title = mw.title.getCurrentTitle()
-- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces
local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' )
if idData then
if idData.deprecated then
args.class = ( args.class or '' ) .. ' sprite-deprecated'
if not disallowCats then
categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages using deprecated sprite names', project = 0 } }
end
end
args.pos = idData.pos
elseif not disallowCats then
categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages with missing sprites', project = 0 } }
end
return p.base( args ), table.concat( categories )
end
function p.link( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
end
local link = args[1]
if args[1] and not args.id then
link = args[1]:match( '^(.-)%+' ) or args[1]
end
local text
if not args.notext then
text = args.text or args[2] or link
end
args[1] = args.id or args[1]
args.link = args.link or link
args.text = text
return p.sprite( args )
end
function p.getUrl( image, query, classname )
local f = CurrentFrame
local t = {
url = f:expandTemplate{
title = 'FileUrl',
args = { image, query = query }
},
}
if classname and classname ~= '' then
t.style = f:expandTemplate{
title = 'FileUrlStyle',
args = { classname, image, query = query }
}
end
return t
end
function p.getParsedUrlStyle( f )
local args = f:getParent().args
local module = args[1]
return require( 'Module:' .. module ).settings.url.style
end
function p.doc( f )
local args = f
if f == CurrentFrame then
args = f.args
else
f = CurrentFrame
end
local dataPage = mw.text.trim( args[1] )
local data = mw.loadData( 'Module:' .. dataPage )
local getProtection = function( title, action, extra )
local protections = { 'edit' }
if extra then
protections[#protections + 1] = extra
end
local addProtection = function( protection )
if protection == 'autoconfirmed' then
protection = 'editsemiprotected'
elseif protection == 'sysop' then
protection = 'editprotected'
end
protections[#protections + 1] = protection
end
local direct = title.protectionLevels[action] or {}
for _, protection in ipairs( direct ) do
addProtection( protection )
end
local cascading = title.cascadingProtection.restrictions[action] or {}
if #cascading > 0 then
protections[#protections + 1] = 'protect'
end
for _, protection in ipairs( cascading ) do
addProtection( protection )
end
return table.concat( protections, ',' )
end
local spriteStyle = ''
if data.settings.url and data.settings.url.style then
spriteStyle = data.settings.url.style
end
local dataTitle = mw.title.new( 'Module:' .. dataPage )
-- Temporary until this is updated
local classname = ''
if data.settings.stylesheet then
classname = data.settings.classname or
mw.ustring.lower( data.settings.name:gsub( ' ', '-' ) ) .. '-sprite'
end
local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png'
local spriteTitle = mw.title.new( 'File:' .. spritesheet )
local dataProtection = getProtection( dataTitle, 'edit' )
local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' )
local body = mw.html.create( 'div' ):attr( {
id = 'spritedoc',
['data-dataprotection'] = dataProtection,
['data-datatimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', 'Module:' .. dataPage ),
['data-datapage'] = 'Module:' .. dataPage,
['data-spritesheet'] = spritesheet,
['data-spriteprotection'] = spriteProtection,
['data-urlfunc'] = "require( [[Module:Sprite]] ).getUrl( '" .. spritesheet .. "', '$1', '" .. classname .. "' )",
['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ),
['data-settings'] = mw.text.jsonEncode( data.settings ),
} )
local sections = {}
for _, sectionData in ipairs( data.sections or { name = 'Uncategorized' } ) do
local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id )
sectionTag:tag( 'h3' ):wikitext( sectionData.name )
sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) }
end
local keyedData = {}
local i = 1
for name, idData in pairs( data.ids ) do
keyedData[i] = {
sortKey = mw.ustring.lower( name ),
name = name,
data = idData
}
i = i + 1
end
table.sort( keyedData, function( a, b )
return a.sortKey < b.sortKey
end )
for _, data in ipairs( keyedData ) do
local idData = data.data
local pos = idData.pos
local section = sections[idData.section]
local names = section[pos]
if not names then
local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos )
box:tag( 'div' ):addClass( 'spritedoc-image' )
:wikitext( p.base{ pos = pos, data = dataPage, nourl = spriteStyle ~= '' } )
names = box:tag( 'ul' ):addClass( 'spritedoc-names' )
section[pos] = names
end
local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' )
local codeElem = nameElem:tag( 'code' ):wikitext( data.name )
if idData.deprecated then
codeElem:addClass( 'spritedoc-deprecated' )
end
names:wikitext( tostring( nameElem ) )
end
if args.refresh then
return '', '', tostring( body )
end
local styles = f:callParserFunction( '#widget:SpriteDoc.css' )
return styles, spriteStyle, tostring( body )
end
return p
166303957bd087cb90e463787612899b203fc5bb
Template:FileUrl
10
3
4
2024-04-08T16:42:04Z
crafting>Grunny
0
allow thumbnail to be optimised, per disucssion with admins
wikitext
text/x-wiki
<includeonly>{{ #ifexist: File:{{PAGENAME:{{{1}}}}} }}{{ #widget: FileUrl | url = {{ #urldecode: {{ #sub: {{filepath: {{#titleparts: {{PAGENAME:{{{1}}}}}}} | {{{2|}}} }} | {{ #len: {{ #explode: {{filepath: Wiki.png}} | b/bc/ }} }} }} }}{{#if: {{{query|}}} | &{{{query}}} }} }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwiki on the documentation page -->
</noinclude>
d5ea447ca6010e54f806a89604d9b39403d9b46e
5
4
2024-04-28T15:47:49Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{ #ifexist: File:{{PAGENAME:{{{1}}}}} }}{{ #widget: FileUrl | url = {{ #urldecode: {{ #sub: {{filepath: {{#titleparts: {{PAGENAME:{{{1}}}}}}} | {{{2|}}} }} | {{ #len: {{ #explode: {{filepath: Wiki.png}} | b/bc/ }} }} }} }}{{#if: {{{query|}}} | &{{{query}}} }} }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwiki on the documentation page -->
</noinclude>
d5ea447ca6010e54f806a89604d9b39403d9b46e
Main Page
0
1
1
2024-04-28T12:26:28Z
MediaWiki default
1
Welcome to Miraheze!
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
This Main Page was created automatically and it seems it hasn't been replaced yet.
=== For the bureaucrat(s) of this wiki ===
Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting.
You can immediately start working on your wiki or whenever you want.
Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links:
* [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users)
* [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]]
* [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.)
==== I still don't understand X! ====
Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here:
* [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]]
* On [[phorge:|Phorge]]
* On [https://miraheze.org/discord Discord]
* On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat])
=== For visitors of this wiki ===
Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later!
070d9e6457eab136df99905438a1f57c037772b0
Module:Random
828
13
25
24
2024-04-28T15:47:55Z
Axxyyy
2
1 revision imported
Scribunto
text/plain
local p = {}
local seeded
local randomseed = math.randomseed
local random = math.random
function p.random( m, n )
if not seeded then
p.seed()
end
return random( n and m or m and 1 or 0, n or m or 1 )
end
function p.seed( seed )
randomseed( seed or ( os.time() + os.clock() * 1000000000 ) )
-- First few values of seed is not guaranteed to be random on some platforms
random()
random()
seeded = true
end
return p
9b7fa144f6e50a8f87ea22766f60b3785413e3b9
Module:UI
828
14
27
26
2024-04-28T15:47:55Z
Axxyyy
2
1 revision imported
Scribunto
text/plain
local slot = require( [[Module:Inventory slot]] ).slot
local addSlot = function( args, item, prefix, class, default )
local none, nostacksize
prefix = prefix or ''
if #prefix == 0 then
none = 'none'
nostacksize = ((item == '' or nil) and '') or (args and args[item] and args[item]:gsub( '[,%d]', '' ) or '')
end
return slot{
nostacksize or args[item], mod = args.Mod, link = none or args[prefix .. 'link'],
title = none or args[prefix .. 'title'], class = class, default = default,
parsed = args.parsed
}
end
function experience_image(exp_value)
local MINMAX = {
{-32768, 2},
{3, 6},
{7, 16},
{17, 36},
{37, 72},
{73, 148},
{149, 306},
{307, 616},
{617, 1236},
{1237, 2476},
{2477, 32767}
}
local EXP_IMGS = {
"Experience Orb Value -32768-2.png",
"Experience Orb Value 3-6.png",
"Experience Orb Value 7-16.png",
"Experience Orb Value 17-36.png",
"Experience Orb Value 37-72.png",
"Experience Orb Value 73-148.png",
"Experience Orb Value 149-306.png",
"Experience Orb Value 307-616.png",
"Experience Orb Value 617-1236.png",
"Experience Orb Value 1237-2476.png",
"Experience Orb Value 2477-32767.png",
}
local n = assert( tonumber(exp_value), "Module:UI: Experience value is not a number (" .. exp_value .. ")" )
local idx = 2; exp = tonumber( exp_value )
if exp <= MINMAX[#MINMAX][2] then
for i = 1, #MINMAX do
if MINMAX[i][1] < exp and MINMAX[i][2] >= exp then
idx = i
break
end
end
end
return tostring( EXP_IMGS[idx] )
end
local p = {}
-- Crafting table
function p.craftingTable( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Crafting_Table pixel-image' )
local input = body:tag( 'span' ):addClass( 'mcui-input' )
for num = 1, 3 do
local row = input:tag( 'span' ):addClass( 'mcui-row' )
for _, letter in ipairs{ 'A', 'B', 'C' } do
row:wikitext( addSlot( args, letter .. num, 'I' ) )
end
end
local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ):done()
if args.arrow or '' ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}'
)
end
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
local shapeless = args.shapeless or ''
local fixed = args.fixed or ''
if shapeless ~= '' or fixed ~= '' then
local icon = body:tag( 'span' )
:addClass( 'mcui-icons' )
:tag( 'span' )
:tag( 'br' )
:done()
if shapeless ~= '' then
icon:addClass( 'mcui-shapeless' )
:attr( 'title',
'This recipe is shapeless, the inputs may be placed in any arrangement in the crafting grid.'
)
elseif fixed ~= '' then
local notFixed = args.notfixed or ''
local exceptFixed = ''
if notFixed ~= '' then
exceptFixed = '; except for ' .. notFixed .. ', which can go anywhere'
end
icon:addClass( 'mcui-fixed' )
:attr( 'title',
'This recipe is fixed, the input arrangement may not be moved or mirrored in the crafting grid' .. exceptFixed .. '.'
)
end
end
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Furnace
function p.furnace( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Furnace pixel-image' )
local input = body:tag( 'span' ):addClass( 'mcui-input' )
input:wikitext( addSlot( args, 'Input', 'I' ) )
local fuel = input:tag( 'span' ):addClass( 'mcui-fuel' ):tag( 'br' ):done()
local fuelImg = args.FuelUsage or ''
local burning = args.Input or '' ~= '' and args.Fuel or '' ~= ''
if not burning then
fuel:addClass( 'mcui-inactive' )
if fuelImg ~= '' then
fuelImg = fuelImg .. ' (in-active)'
end
end
if fuelImg ~= '' then
fuel:css(
'background-image',
'{{FileUrl|' .. fuelImg .. ' (' .. args.Mod .. ').png}}'
)
end
input:wikitext( addSlot( args, 'Fuel', 'F' ) )
local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' ):done()
local arrowImg = args.Progress or ''
if not burning or ( args.Output or '' ) == '' then
arrow:addClass( 'mcui-inactive' )
if arrowImg ~= '' then
arrowImg = arrowImg .. ' (in-active)'
end
end
if arrowImg ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. arrowImg .. ' Progress (' .. args.Mod .. ').png}}'
)
end
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
args.Experience = args.Experience or ''
if args.Experience ~= '' then
-- Converts commas to dots, removes all spaces and splits the arguments with semicolon.
local split = mw.text.split(string.gsub(args.Experience, '[ ,]', {[' '] = '', [','] = '.'}), ';', true)
local animated = body:tag('span'):attr('title', 'If there is a fractional part, it means the recipe has a chance equal to the fractional part of rewarding an additional XP point.')
:addClass('animated'):cssText('position:absolute;top:92px;left:108px;text-align:center;width:70px;')
local isNotFirst = true
for i, v in ipairs(split) do
assert(tonumber(v), 'Module:UI: "' .. v .. '" is not a valid number')
local xp = tonumber(v)
animated:tag('span')
:addClass(isNotFirst and 'animated-active' or nil)
:wikitext('<span style="display:inline-block;margin-top:3px;width:16px;height:16px;vertical-align:top;background-size:16px 16px;background-image:{{FileUrl|' .. experience_image(xp) .. '}}"></span>'
.. '<span style="display:inline-block;vertical-align:top;font-family:Minecraft;font-size:16px;color:#404040">'
.. (' ' and xp > 72 or '') .. xp .. '</span>')
isNotFirst = false
end
end
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Brewing Stand
function p.brewingStand( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Brewing_Stand pixel-image' )
local input = body:tag( 'span' ):addClass( 'mcui-input' )
input:tag( 'span' ):addClass( 'mcui-bubbling' ):tag( 'br' )
input:wikitext( addSlot( args, 'Input', 'I' ) )
input:tag( 'span' ):addClass( 'mcui-arrow' ):tag( 'br' )
if ( args.Input or '' ) == '' or
( ( args.Output1 or '' ) == '' and ( args.Output2 or '' ) == '' and ( args.Output3 or '' ) == '' )
then
input:addClass( 'mcui-inactive' )
end
body:tag( 'span' ):addClass( 'mcui-paths' ):tag( 'br' )
local output = body:tag( 'span' ):addClass( 'mcui-output' )
for i = 1, 3 do
output:wikitext( addSlot( args, 'Output' .. i, 'O' .. i, 'mcui-output' .. i ) )
end
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Stonecutter
function p.stonecutter( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Stonecutter pixel-image' )
local input = body:tag( 'span' ):addClass( 'mcui-input' )
input:wikitext( addSlot( args, 'Input', 'I' ) )
local arrow = body:tag( 'span' ):addClass( 'mcui-stonecutterArrow' )
if (args.arrow or '') ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}'
)
end
arrow:wikitext( addSlot( args, 'Output', '', 'invslot-plain mcui-stonecutterSprite' ) )
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Loom
function p.loom( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Loom pixel-image' )
local tapestry = body:tag( 'span' ):addClass( 'mcui-tapestry' )
if args.Banner and #args.Banner>0 then
tapestry:wikitext( addSlot( args, 'Banner', 'B', 'mcui-inputBanner' ) )
end
if args.Dye and #args.Dye>0 then
tapestry:wikitext( addSlot( args, 'Dye', 'D', 'mcui-inputDye' ) )
end
if args.Pattern and #args.Pattern>0 then
tapestry:wikitext( addSlot( args, 'Pattern', 'P', 'mcui-inputPattern' ) )
end
tapestry:tag( 'span' ):tag( 'br' ):done()
local arrow = body:tag( 'span' ):addClass( 'mcui-loomArrow' )
if args.arrow or '' ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}'
)
end
local sprite = args.Sprite
local bannerSprite
if sprite and #sprite>0 then
local animate = require( [[Module:AnimateSprite]] ).animate
bannerSprite = animate{
args.Sprite,
sheet = 'SlotSprite'
}
else
bannerSprite = '<br>'
end
arrow
:tag( 'span' )
:addClass( 'mcui-bannerSprite' )
:wikitext( bannerSprite )
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Grindstone
function p.grindstone( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local body = mw.html.create( 'span' ):addClass( 'mcui mcui-Grindstone pixel-image' )
local grindstone = body:tag( 'span' ):addClass( 'mcui-grindstone' )
grindstone:wikitext( addSlot( args, 'Input1', 'I1', 'mcui-input1' ) )
grindstone:wikitext( addSlot( args, 'Input2', 'I2', 'mcui-input2' ) )
local arrow = body:tag( 'span' ):addClass( 'mcui-arrow' )
if args.arrow or '' ~= '' then
arrow:css(
'background-image',
'{{FileUrl|' .. args.arrow .. ' (' .. args.Mod .. ').png}}'
)
end
body
:tag( 'span' )
:addClass( 'mcui-output' )
:wikitext( addSlot( args, 'Output', 'O', 'invslot-large' ) )
return tostring( mw.html.create( 'div' ):node( body ) )
end
-- Smithing Table
function p.smithing (f)
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
return tostring( mw.html.create( 'div' ):node( body ) )
end
return p
97a9c6a0c750f51165133aca6edc1af4228188c5
Template:Template link
10
15
29
28
2024-04-28T15:47:56Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#if:{{yesno|{{{code|yes}}}}}|<code>}}{{{{#if: {{{subst|}}}|[[WP:SUBSTITUTION|subst]]: }}[[{{#if: {{#pos: {{{1}}} | : }} || Template: }}{{{1}}}|{{ #ifeq: {{NAMESPACE:{{{1}}}}} | Template | {{PAGENAME:{{{1}}}}} | {{{1}}} }}]]{{ #if: {{{2|}}}{{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{2|}}} }}{{ #if: {{{3|}}}{{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{3|}}} }}{{ #if: {{{4|}}}{{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{4|}}} }}{{ #if: {{{5|}}}{{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{5|}}} }}{{ #if: {{{6|}}}{{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{6|}}} }}{{ #if: {{{7|}}}{{{8|}}}{{{9|}}} | {{!}}{{{7|}}} }}{{ #if: {{{8|}}}{{{9|}}} | {{!}}{{{8|}}} }}{{ #if: {{{9|}}} | {{!}}{{{9|}}} }}}}{{#if:{{yesno|{{{code|yes}}}}}|</code>}}{{#if: {{#pos: {{{1}}} | File: }}{{#pos: {{{1}}} | Category: }} | [[Category:Fixme]] }}</includeonly><noinclude>
<!-- categories/interwikis on the /doc subpage, not here -->
{{Documentation}}
</noinclude>
42669227d2179e342a03b8be8115ada28536e13b
Template:Tl
10
16
31
30
2024-04-28T15:47:56Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
#REDIRECT [[Template:Template link]]
fb9a6b420e13178e581af6e7d64274cd30a79017
Template:Documentation
10
17
33
32
2024-04-28T15:47:56Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke: documentation | page }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwikis on the documentation page -->
</noinclude>
c461cd371bd48a195ce5385c361e8f7e71be1463
63
33
2024-04-30T01:03:16Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke: documentation | page }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwikis on the documentation page -->
</noinclude>
c461cd371bd48a195ce5385c361e8f7e71be1463
Template:Documentation header
10
18
35
34
2024-04-28T15:47:57Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke: documentation | docPage }}</includeonly><noinclude>
{{documentation|content=
Used on the top of a documentation page.
}}
[[Category:Documentation templates|*]]
[[tr:Şablon:Belgeleme üstbilgisi]]
[[zh:Template:Documentation header]]
fbfd2788ba2c707df1f24456c97112cb96e156fb
Module:Documentation
828
19
37
36
2024-04-28T15:47:57Z
Axxyyy
2
1 revision imported
Scribunto
text/plain
local p = {}
local defaultDocPage = 'doc'
local getType = function( namespace, page )
local pageType = 'template'
if namespace == 'Module' then
pageType = 'module'
elseif namespace == 'Widget' then
pageType = 'widget'
elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.css$' ) then
pageType = 'stylesheet'
elseif page.fullText:gsub( '/' .. defaultDocPage .. '$', '' ):find( '%.js$' ) then
pageType = 'script'
elseif namespace == 'MediaWiki' then
pageType = 'message'
end
return pageType
end
-- Creating a documentation page or transclusion through {{subst:docc}}
function p.create( f )
local args = require( 'Module:ProcessArgs' ).norm()
local page = mw.title.getCurrentTitle()
local docPage = args.page or page.nsText .. ':' .. page.baseText .. '/' .. defaultDocPage
local out
if not args.content and tostring( page ) == docPage then
out = f:preprocess( '{{subst:Template:Documentation/preload}}' )
else
local templateArgs = {}
for _, key in ipairs{ 'type', 'page', 'content' } do
local val = args[key]
if val then
if key == 'content' then val = '\n' .. val .. '\n' end
table.insert( templateArgs, key .. '=' .. val )
end
end
out = '{{documentation|' .. table.concat( templateArgs, '|' ) .. '}}'
out = out:gsub( '|}}', '}}' )
if not args.content then
out = out .. '\n<!-- Put categories/interwikis on the documentation page -->'
end
end
if not mw.isSubsting() then
out = f:preprocess( out )
if not args.nocat then
out = out .. '[[Category:Pages with templates requiring substitution]]'
end
end
return out
end
-- Header on the documentation page
function p.docPage( f )
local args = require( 'Module:ProcessArgs' ).merge( true )
local badDoc = args.baddoc
if f:callParserFunction( '#dplvar', '$doc noheader' ) == '1' then
if badDoc then
f:callParserFunction( '#dplvar:set', '$doc bad', '1' )
end
return
end
local page = mw.title.getCurrentTitle()
local subpage = page.subpageText
if subpage == 'sandbox' or subpage == 'testcases' then
page = page.basePageTitle
end
local namespace = page.nsText
local pageType = mw.ustring.lower( args.type or getType( namespace, page ) )
local body = mw.html.create( 'div' ):addClass( 'documentation-header' )
body
:addClass( badDoc and 'documentation-badDoc' or '' )
:css{
['margin-bottom'] = '0.8em',
padding = '0.8em 1em 0.7em',
['background-color'] = '#' .. ( badDoc and '888888' or '33333333' ),
border = '1px solid #AAA'
}
:tag( 'div' )
:attr( 'id', 'documentation-header-tools' )
:css( 'float', 'right' )
:wikitext( '[[', page:fullUrl( 'action=purge' ), ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']]' )
:done()
:wikitext(
'This is the documentation page. It ',
pageType == 'module' and 'will' or 'should',
' be transcluded into the main ', pageType, ' page. ',
'See [[Template:Documentation]] for more information'
)
if badDoc then
body:wikitext( "<br>'''This ", pageType, "'s documentation needs improving or additional information.'''" )
end
if not ( args.nocat or namespace == 'User' ) then
body:wikitext( '[[Category:Documentation pages]]' )
end
return body
end
-- Wrapper around the documentation on the main page
function p.page( f )
-- mw.text.trim uses mw.ustring.gsub, which silently fails on large strings
local function trim( s )
return (s:gsub( '^[\t\r\n\f ]+', '' ):gsub( '[\t\r\n\f ]+$', '' ))
--return string.gsub( s, '^[\t\r\n\f ]*(.-)[\t\r\n\f ]*$', '%1' )
end
local args = require( 'Module:ProcessArgs' ).merge( true )
local page = mw.title.getCurrentTitle()
local subpage = page.subpageText
if subpage == 'sandbox' or subpage == 'testcases' then
page = page.basePageTitle
end
local namespace = page.nsText
local docText = trim( args.content or '' )
if docText == '' then docText = nil end
local docPage
local noDoc
if docText then
docPage = page
else
docPage = mw.title.new( args.page or namespace .. ':' .. page.text .. '/' .. defaultDocPage )
noDoc = args.nodoc or not docPage.exists
end
local badDoc = args.baddoc
local pageType = mw.ustring.lower( args.type or getType( namespace, page ) )
if not docText and not noDoc then
f:callParserFunction( '#dplvar:set', '$doc noheader', '1' )
docText = trim( f:expandTemplate{ title = ':' .. docPage.fullText } )
if f:callParserFunction( '#dplvar', '$doc bad' ) == '1' then
badDoc = 1
end
if docText == '' then
docText = nil
noDoc = 1
end
end
if docText then
docText = '\n' .. docText .. '\n'
end
local action = f:preprocess('{{lc:{{int:edit}}}}')
local preload = ''
local docClass = ''
local colour = '00000000'
local message
local category
if noDoc then
action = f:preprocess('{{lc:{{int:create}}}}')
preload = '&preload=Template:Documentation/preload'
docClass = 'documentation-noDoc'
colour = '33333333'
message = "'''This " .. pageType .. " has no documentation. " ..
"If you know how to use this " .. pageType .. ", please create it.'''"
if not ( args.nocat or namespace == 'User' ) then
category = pageType .. 's with no documentation'
if not mw.title.new( 'Category:' .. category ).exists then
category = 'Pages with no documentation'
end
end
elseif badDoc then
docClass = 'documentation-badDoc'
colour = 'F9F2EA'
message = "'''This " .. pageType .. "'s documentation needs improving or additional information.'''\n"
if not ( args.nocat or namespace == 'User' ) then
category = pageType .. 's with bad documentation'
if not mw.title.new( 'Category:' .. category ).exists then
category = 'Pages with bad documentation'
end
end
end
local links = {
'[' .. docPage:fullUrl( 'action=edit' .. preload ) .. ' ' .. action .. ']',
'[' .. docPage:fullUrl( 'action=history' ) .. ' ' .. f:preprocess('{{lc:{{int:history short}}}}') .. ']',
'[' .. page:fullUrl( 'action=purge' ) .. ' ' .. f:preprocess('{{lc:{{int:page-header-action-button-purge}}}}') .. ']'
}
if not noDoc and page ~= docPage then
table.insert( links, 1, '[[' .. docPage.fullText .. '|' .. f:preprocess('{{lc:{{int:view}}}}') .. ']]' )
end
links = mw.html.create( 'span' )
:attr( 'id', 'documentation-header-tools' )
:css( 'float', 'right' )
:wikitext( mw.text.nowiki( '[' ), table.concat( links, ' | ' ), mw.text.nowiki( ']' ) )
local body = mw.html.create( 'div' ):addClass( 'documentation' )
body
:addClass( docClass )
:css{
['background-color'] = '#' .. colour,
border = '1px solid #AAA',
padding = '0.8em 1em 0.7em',
['margin-top'] = '1em',
clear = 'both'
}
local header = mw.html.create( 'div' )
:addClass( 'documentation-header-top' )
:css{
margin = '-0.8em -1em 0.8em',
padding = '0.8em 1em 0.7em',
['background-color'] = '#33333333',
['border-bottom'] = 'inherit'
}
header
:node( links )
:tag( 'span' )
:attr( 'id', 'documentation-header-title' )
:css{
['font-weight'] = 'bold',
['font-size'] = '130%',
['margin-right'] = '1em',
['line-height'] = '1'
}
:wikitext( 'Documentation' )
local codePages = {
module = true,
stylesheet = true,
script = true,
}
if not noDoc and codePages[pageType] then
header
:tag( 'span' )
:attr( 'id', 'documentation-jump-to-code' )
:css( 'white-space', 'nowrap' )
:wikitext( '[[#the-code|Jump to code ↴]]' )
end
body
:node( header ):done()
:wikitext( message )
:wikitext( docText )
if not noDoc and page ~= docPage then
body
:tag( 'div' )
:addClass( 'documentation-header-bottom' )
:css{
margin = '0.7em -1em -0.7em',
['background-color'] = '#33333333',
['border-top'] = 'inherit',
padding = '0.8em 1em 0.7em',
clear = 'both'
}
:node( links )
:wikitext( 'The above documentation is transcluded from [[', docPage.fullText, ']].' )
end
local anchor = ''
if not noDoc and pageType ~= 'template' and pageType ~= 'message' then
anchor = mw.html.create( 'div' ):attr( 'id', 'the-code' )
end
return tostring( body ) .. tostring( anchor )
end
return p
21bd039aea338542482dbf80b92e8ebf5465f0c3
Template:Lua
10
20
39
38
2024-04-28T15:47:58Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
{{msgbox
| image = Lua logo.svg
| text = This {{#ifeq:{{NAMESPACENUMBER}}|828|module depends on|template uses}} '''<includeonly>[[</includeonly>Module:{{ucfirst: {{PAGENAME:{{{1|{{#ifeq:{{SUBPAGENAME}}|doc|{{BASEPAGENAME}}|{{PAGENAME}}}}}}}}} }}<includeonly>]]</includeonly>''', {{ #if: {{{data|}}} | with data stored in [[Module:{{ ucfirst: {{PAGENAME:{{{data}}}}} }}]]{{ #if: {{{data2|}}} |  and [[Module:{{ ucfirst: {{PAGENAME:{{{data2}}}}} }}]] }} | a script written in [[wp:Lua|Lua]] }}.<br>{{ #if: {{{data|}}} | These scripts are written in [[wp:Lua|Lua]]. }}
}}<includeonly>{{
#if: {{{nocat|}}}
|
| {{#switch: {{SUBPAGENAME}}
| doc | sandbox | testcases =
| {{#switch: {{NAMESPACENUMBER}}
| 0 | 10 = [[Category:Lua-based templates]]
}}
}}
}}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwikis on the documentation page -->
</noinclude>
1af47d4a3d4e04248e59e53d9a82bc8a35d14d51
Template:UI see also
10
21
41
40
2024-04-28T15:47:58Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
* {{tl|Crafting Table}}
* {{tl|Inventory Table}}
* {{tl|Furnace}}
* {{tl|Brewing Stand}}
* {{tl|Stonecutter}}
* {{tl|Loom}}
* {{tl|Grindstone}}
* {{tl|Hotbar}}
* {{tl|Inventory}}
* {{tl|Inventory slot}}
* [[Module:UI]]<noinclude>
{{Documentation}}
<!-- Put categories/interwiki on the documentation page -->
</noinclude>
f7bc713ef11da21be62732d6a243da2412173562
Template:Crafting Table/doc
10
22
43
42
2024-04-28T15:47:59Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
{{documentation header}}
{{lua|UI}}
This template is used to create an interface that looks similar to the [[Crafting Table|Crafting Table's]].
See [[Template:Inventory slot]] for basic usage, this documentation page will cover additional or different functions.
Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead.
__TOC__
== Usage ==
<pre style="max-width: 250px">{{Crafting Table
|A1= |B1= |C1=
|A2= |B2= Oak Wood Planks |C2=
|A3= |B3= Oak Wood Planks |C3=
|Output= Stick,4
}}</pre>
;produces:
{{Crafting Table
|A1= |B1= |C1=
|A2= |B2= Oak Wood Planks |C2=
|A3= |B3= Oak Wood Planks |C3=
|Output= Stick,4
}}
=== Shapeless ===
If a recipe is shapeless, add shapeless=1 to the template, which will display an icon which when hovered over explains what a shapeless recipe is.
<pre style="max-width: 236px">{{Crafting Table
|shapeless= 1
|A1= |B1= Blaze Powder |C1=
|A2= |B2= Coal,Charcoal |C2=
|A3= |B3= Gunpowder |C3=
|Output= Fire Charge,3
}}</pre>
;produces:
{{Crafting Table
|shapeless= 1
|A1= |B1= Blaze Powder |C1=
|A2= |B2= Coal,Charcoal |C2=
|A3= |B3= Gunpowder |C3=
|Output= Fire Charge,3
}}
The shapeless parameter does not support animation, so shapeless and non-shapeless recipes cannot be combined.
=== Fixed ===
If a recipe is fixed, add fixed=1 to the template, which will display an icon which when hovered over explains what a fixed recipe is. The <code>notfixed</code> parameter can also be set to specify exceptions.
<pre style="max-width: 31em">{{Crafting Table
|fixed= 1
|notfixed= the banner
|B2= Banner
|A3= Lapis Lazuli |B3= Lapis Lazuli |C3= Lapis Lazuli
|Output= Blue Base Banner
}}</pre>
;produces:
{{Crafting Table
|fixed= 1
|notfixed= the banner
|B2= Banner
|A3= Lapis Lazuli |B3= Lapis Lazuli |C3= Lapis Lazuli
|Output= Blue Base Banner
}}
The fixed parameter does not support animation, so fixed, shapeless and normal recipes cannot be combined.
=== Animated ===
To make the slots animate, you make a list of blocks and objects you want to show, separated by semi-colons.
<pre style="max-width: 616px">{{Crafting Table
|A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli
|A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli
|A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli
|Output= Lapis Lazuli,9; Lapis Lazuli Block
}}</pre>
;produces:
{{Crafting Table
|A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli
|A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli
|A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli
|Output= Lapis Lazuli,9; Lapis Lazuli Block
}}
<pre style="max-width: 602px">{{Crafting Table
|A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block; Block of Netherite
}}</pre>
;produces:
{{Crafting Table
|A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli; Netherite Ingot
|Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block; Block of Netherite
}}
=== Mods ===
Mod images and normal images can be combined just like in a single slot. However, this usage is not recommended, as [https://ftb.gamepedia.com/Feed_The_Beast_Wiki:Minecraft_Wiki_exportation_project mod pages are currently being transferred to the FTB Wiki].
<!--
When uploading mod images, they must have the mod page name in parenthesis at the end. For example Fancystone (FancyPack).
The Mod parameter can be used to set a default used for all parameters, this is best used when all items in the crafting table are modded items, or if the mod name is long and using the vanilla (v) parameter for the vanilla items in the table would be quicker.
<pre style="max-width: 848px">{{Crafting Table
|A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust
|A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit
|A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone
|Output= IndustrialCraft:Advanced Circuit,2
}}</pre>
;or
<pre style="max-width: 656px">{{Crafting Table
|Mod= IndustrialCraft
|A1= v:Redstone Dust |B1= Cable |C1= vanilla:Glowstone Dust
|A2= Electronic Circuit |B2= V:Lapis Lazuli Block |C2= Electronic Circuit
|A3= Vanilla:Glowstone Dust |B3= Cable |C3= v:Redstone Dust
|Output= Advanced Circuit,2
}}</pre>
;produces:
{{Crafting Table
|A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust
|A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit
|A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone
|Output= IndustrialCraft:Advanced Circuit,2
}}
Note the links of the vanilla Minecraft items, compared to the IndustrialCraft items.
Animation is fully supported between mod and vanilla items.
-->
== See also ==
{{UI see also}}
<includeonly>
[[Category:Inventory templates]]
[[Category:Image templates]]
[[de:Vorlage:Grid/Crafting Table]]
[[es:Plantilla:Mesa de trabajo]]
[[fr:Modèle:Grille/Établi]]
[[it:Template:Grid/Crafting Table]]
[[ja:テンプレート:Crafting Table]]
[[ko:틀:Crafting Table]]
[[nl:Template:Grid/Crafting Table]]
[[pl:Szablon:Grid/Crafting Table]]
[[pt:Predefinição:Bancada de trabalho]]
[[ru:Шаблон:Верстак]]
[[uk:Шаблон:Верстак]]
[[zh:Template:Crafting Table]]
</includeonly>
<noinclude>
[[de:Vorlage:Grid/Crafting Table/doc]]
[[es:Plantilla:Mesa de trabajo/doc]]
[[fr:Modèle:Grille/Établi/doc]]
[[ja:テンプレート:Crafting Table/doc]]
[[ko:틀:Crafting Table/doc]]
[[nl:Template:Grid/Crafting Table/doc]]
[[pl:Szablon:Grid/Crafting Table/doc]]
[[pt:Predefinição:Bancada de trabalho/doc]]
[[ru:Шаблон:Верстак/док]]
[[uk:Шаблон:Верстак/док]]
[[zh:Template:Crafting Table/doc]]
</noinclude>
1f97eaff4bbd7dd9511988b592fb9360e879a2cb
Main Page
0
1
44
1
2024-04-29T14:44:22Z
Axxyyy
2
wikitext
text/x-wiki
__NOTOC__
== Welcome to {{SITENAME}}! ==
I made this wiki as a place to document the features of my mods. This wiki will have all the items, blocks, and recipes of the mod.
This wiki will be updated constantly.
92dd9c301b7a9a6904a54fbf4dadf7c1d432c79d
Silicon
0
28
50
2024-04-29T19:59:24Z
Axxyyy
2
Created page with "Ceramic is a basic material in Atomic Technology. {{Grid/Crafting Table |Mod= Atomic Technology |A2= V:Sand |B2= V:Clay |Output= Ceramic, 2 }} It is used to make [[Forge Casing]]s and [[Forge Controller]]s."
wikitext
text/x-wiki
Ceramic is a basic material in Atomic Technology.
{{Grid/Crafting Table
|Mod= Atomic Technology
|A2= V:Sand |B2= V:Clay
|Output= Ceramic, 2
}}
It is used to make [[Forge Casing]]s and [[Forge Controller]]s.
1c95c10c85f1642bdd1d4abcec534916883538e0
File:Grid Ceramic (Atomic Technology).png
6
37
59
2024-04-29T21:51:30Z
Axxyyy
2
Ceramic
wikitext
text/x-wiki
== Summary ==
Ceramic
e010431ba73c6ad374a18be7dd94a236f71c7088
Template:Tlx
10
39
65
64
2024-04-30T01:03:17Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
{{#if:{{{plain|}}}||<code>}}{{[[{{#if:{{{SISTER|}}}|{{{SISTER}}}:Template|Special:MyLanguage/{{ns:Template}}}}:{{{1|Tlx}}}|{{{1|Tlx}}}]]<!--
-->{{#if:{{{2|}}}||{{{2}}}}}<!--
-->{{#if:{{{3|}}}||{{{3}}}}}<!--
-->{{#if:{{{4|}}}||{{{4}}}}}<!--
-->{{#if:{{{5|}}}||{{{5}}}}}<!--
-->{{#if:{{{6|}}}||{{{6}}}}}<!--
-->{{#if:{{{7|}}}||{{{7}}}}}<!--
-->{{#if:{{{8|}}}||''...''}}}}{{#if:{{{plain|}}}||</code>}}<noinclude>
{{documentation}}
</noinclude>
f2cb8c0397aa726f8314df231cfe853f25cab851
Template:Documentation/styles.css
10
40
67
66
2024-04-30T01:03:18Z
Axxyyy
2
1 revision imported
text
text/plain
/* {{PP-template}} */
.ts-doc-sandbox .mbox-image {
padding:.75em 0 .75em .75em;
}
.ts-doc-doc {
clear: both;
background-color: #ecfcf4;
border: 1px solid #a2a9b1;
margin-top: 1em;
padding: 5px;
}
.ts-doc-header {
padding-bottom: 3px;
border-bottom: 1px solid #a2a9b1;
margin-bottom: 1ex;
}
.ts-doc-header .ts-tlinks-tlinks {
display: inline-block;
line-height: 24px;
margin-left: 1em;
}
.ts-doc-header .ts-tlinks-tlinks a.external {
color: #0645ad;
}
.ts-doc-header .ts-tlinks-tlinks a.external:visited {
color: #0b0080;
}
.ts-doc-header .ts-tlinks-tlinks a.external:active {
color: #faa700;
}
.ts-doc-content:after {
content: '';
clear: both;
display: block;
}
.ts-doc-heading {
display: inline-block;
padding-left: 55px;
background: center left/50px no-repeat;
background-image: url(https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg/50px-Test_Template_Info-Icon_-_Version_%282%29.svg.png);
background-image: url(https://upload.wikimedia.org/wikipedia/commons/4/43/Test_Template_Info-Icon_-_Version_%282%29.svg);
font-size: 1.5em;
}
.ts-doc-content > *:first-child,
.ts-doc-footer > *:first-child {
margin-top: .5em;
}
.ts-doc-content > *:last-child,
.ts-doc-footer > *:last-child {
margin-bottom: .5em;
}
.ts-doc-footer {
background-color: #ecfcf4;
border: 1px solid #a2a9b1;
padding: .25em 1em;
margin-top: .2em;
font-style: italic;
}
.ts-doc-footer small {
font-style: normal;
}
.ts-doc-sandbox {
clear: both;
}
c37b0ddfd0b1c128c187ca56721d1c4e481b05ff
Template:Uselang
10
41
69
68
2024-04-30T01:03:19Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
{{#ifeq:{{Int:Lang}}|⧼Lang⧽|en|{{Int:Lang}}}}<noinclude>{{Doc}}</noinclude>
cdb7e5da66ac1deb7310bf422b52c99913388742
Template:Dir
10
42
71
70
2024-04-30T01:03:19Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
{{#switch:{{#if:{{{1|}}}|{{{1|}}}|{{Uselang}}}}|ar|arc|ary|arz|azb|bcc|bgn|ckb|bqi|dv|fa|fa-af|glk|ha-arab|he|kk-arab|kk-cn|ks|ks-arab|ku-arab|ms-arab|mzn|pnb|prd|ps|sd|ug|ur|ydd|yi={{{2|rtl}}}|{{{3|ltr}}}}}<noinclude>{{Documentation}}</noinclude>
a65308984923226784ec1a65932f60f03cde075c
Template:Str left
10
43
73
72
2024-04-30T01:03:20Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{ {{{|safesubst:}}}padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude>
{{documentation}}
</noinclude>
9c0bdb76d3fd64ecd8af888df4ec235e5aec0b33
Template:BCP47
10
44
75
74
2024-04-30T01:03:20Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
{{#switch:{{lc:{{{1|}}}}}
<!-- pseudo codes -->
||root|default|i-default=<!-- empty language tag means unknown per the HTML spec --><!-- or ={{int:lang}}? (the best user default), or =en? (the default "ContentLanguage" for unlocalized data on Meta) -->
<!-- current BCP47 violations by Wikimedia sites, which can be fixed using standard tags when they exist -->
|als=gsw
|bat-smg=sgs
|de-formal=de<!-- could be "de-x-formal", but actually a subset within standard "de" for HTML/XML -->
|eml=egl<!-- retired code, the de facto eml.wikipedia uses Emilian, not Romagnol -->
|fiu-vro=vro
|mo=ro-cyrl<!-- retired, best fit on Wikimedia sites, but no longer working in interwikis (Wikipedia project deleted) -->
|nl-informal=nl<!-- could be "nl-x-informal", but actually a subset within standard "nl" for HTML/XML -->
|nrm=nrf<!-- Wikimedia sites uses "nrm" to mean Norman, but standard "nrm" is an unrelated language. The "nrf" code is now standardized for Norman (previously used a private-use extension of French "fr-x-nrm") -->
|roa-rup=rup
|simple=en<!-- could be "en-simple" but actually a subset within standard "en" for HTML -->
|sr-ec=sr-cyrl
|sr-el=sr-latn
|zh-classical=lzh
<!-- other current BCP47 violations by Wikimedia sites, fixed using private-use extensions (if they are needed, labels are limited to 8 letters/digits) -->
|cbk-zam=cbk-x-zam
|map-bms=jv-x-bms
|roa-tara=it-x-tara
|tokipona|tp=x-tokipona
<!-- conforming BCP47 "private-use" extensions used by Wikimedia, which are no longer needed, and improved using now standard codes -->
|be-x-old=be-tarask
<!-- conforming but ambiguous BCP47 codes used by Wikimedia in a more restrictive way, with more precision -->
|arc=syc<!-- The de-facto arc.wikipedia.org, as per their community request, is in actual using Syriac which is coded as syc -->
|no=nb<!-- "no" means Bokmål on Wikimedia sites, "nb" is not used -->
|bh=bho<!-- "bh"="bih" is a language family, interpreted in Wikimedia as the single language "bho", even if its interwiki code remains bh) -->
|tgl=tl-tglg<!-- "tgl" on Wikimedia is the historic variant of the Tagalog macrolanguage ("tl" or "tgl", "tl" recommended for BCP47), written in the Baybayin script ("tglg") -->
<!-- conforming BCP47 "inherited" tags, strongly discouraged and replaced by their recommended tags (complete list that should not be augmented now) -->
|art-lojban=jbo<!-- still used in some old Wikimedia templates -->
|en-gb-oed=en-gb<!-- no preferred replacement, could be "en-gb-x-oed" but actually a subset within standard "en-gb" -->
|i-ami=ami
|i-bnn=bnn
|i-hak=hak
|i-klingon=tlh
|i-lux=lb
|i-navajo=nv
|i-pwn=pwn
|i-tao=tao
|i-tay=tay
|i-tsu=tstu
|no-bok=nb<!-- still used in some old Wikimedia templates -->
|no-nyn=nn<!-- still used in some old Wikimedia templates -->
|sgn-be-fr=sfb
|sgn-be-nl=vgt
|sgn-ch-de=sgg
|zh-guoyu=cmn<!-- this could be an alias of "zh" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin -->
|zh-hakka=hak
|zh-min=zh-tw<!-- no preferred replacement, could be "zh-x-min", but actually a subset within standard "zh-tw"; not necessarily "nan" -->
|zh-min-nan=nan<!-- used in some old Wikimedia templates and in interwikis -->
|zh-xiang=hsn
<!-- conforming BCP47 "redundant" tags, discouraged and replaced by their recommended tags (complete list that should not be augmented now) -->
|sgn-br=bzs
|sgn-co=csn
|sgn-de=gsg
|sgn-dk=dsl
|sgn-es=ssp
|sgn-fr=fsl<!-- still used in some old Wikimedia templates -->
|sgn-gb=bfi
|sgn-gr=gss
|sgn-ie=isg
|sgn-it=ise
|sgn-jp=jsl
|sgn-mx=mfs
|sgn-ni=ncs
|sgn-nl=dse
|sgn-no=nsl
|sgn-pt=psr
|sgn-se=swl
|sgn-us=ase<!-- still used in some old Wikimedia templates -->
|sgn-za=sfs
|zh-cmn=cmn<!-- still used in some old Wikimedia templates, this could be an alias of "zh" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin -->
|zh-cmn-Hans=cmn-hans<!-- still used in some old Wikimedia templates, this could be an alias of "zh-hans" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin -->
|zh-cmn-Hant=cmn-hant<!-- still used in some old Wikimedia templates, this could be an alias of "zh-hant" on Wikimedia sites, which do not use "cmn" but assume "zh" is Mandarin -->
|zh-gan=gan<!-- still used in some old Wikimedia templates -->
|zh-wuu=wuu<!-- still used in some old Wikimedia templates -->
|zh-yue=yue<!-- still used in some old Wikimedia templates and in interwikis -->
<!-- other "inherited" tags of the standard, strongly discouraged as they are deleted, but with no defined replacement there are left unaffected (complete list that should not be augmented now)-->
|cel-gaulish=xtg<!--ambiguous, most often "xtg" for Transalpine Gaulish in today's France, may also be "xcg" for Cisalpine Gaulish in today's Northern Italy-->
|i-enochian=x-enochian?
|i-mingo=x-mingo?
<!-- other standard "redundant" tags, which were unnecessarily registered (they validate with standard subtags) and that are left unaffected (complete list that should not be augmented now)
|az-arab
|az-cyrl
|az-latn
|be-latn
|bs-cyrl
|bs-latn
|de-1901
|de-1996
|de-at-1901
|de-at-1996
|de-ch-1901
|de-ch-1996
|de-de-1901
|de-de-1996
|en-boont
|en-scouse
|iu-cans
|iu-latn
|mn-cyrl
|mn-mong
|sl-nedis
|sl-rozaj
|sr-cyrl
|sr-latn
|tg-arab
|tg-cyrl
|uz-cyrl
|uz-latn
|yi-latn
|zh-hans
|zh-hans-cn
|zh-hans-hk
|zh-hans-mo
|zh-hans-sg
|zh-hans-tw
|zh-hant
|zh-hant-cn
|zh-hant-hk
|zh-hant-mo
|zh-hant-sg
|zh-hant-tw
--- standard special codes
|mul
|und
--- all other unaffected tags:
Minimal check of validity (valid BCP47 codes are necessarily stable over URLENCODE and #titleparts).
The check ensures that the code contains only ASCII letters, digits or hyphens, and starts by a letter.
This check is necessary to avoid a severe bug in MediaWiki, with some values of parameter 1, notably with
urlencoded characters (including quotes, braces, ampersands...), slashes, or any HTML or wiki formatting
(see also [[Template:CURRENTCONTENTLANGUAGE]]). If successful, force result to lowercase; otherwise
return an empty language tag.
-->
|#default =
{{#ifeq: {{#titleparts:{{{1|}}}|1}} | {{#titleparts:{{{1|}}}||-1}}
| {{#ifeq: {{lc:{{#titleparts:{{{1|}}}|1}}}} | {{ucfirst:{{lc:{{#titleparts:{{{1|}}}|1}}}}}}
|
| {{#ifeq: {{{1|}}} | {{urlencode:{{{1|}}}}}
| {{lc:{{{1|}}}}}
}}
}}
}}
}}<noinclude>{{Documentation}}</noinclude>
c8d624bc6118b4a7d84d16636cf616ce4c2df56f
Template:Languages
10
45
77
76
2024-04-30T01:03:20Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{Nmbox|header={{int:tpt-languages-legend}}
|text='''[[{{{1|{{NAMESPACE}}:{{BASEPAGENAME}}}}}|English]]'''<!--
For the tested order below, see https://commons.wikimedia.org/wiki/Module_talk:Multilingual_description/sort/testcases
-->{{Languages/Lang|sma|{{{1|}}}|
}}{{Languages/Lang|ace|{{{1|}}}|
}}{{Languages/Lang|ang|{{{1|}}}|
}}{{Languages/Lang|af|{{{1|}}}|
}}{{Languages/Lang|ak|{{{1|}}}|
}}{{Languages/Lang|gsw|{{{1|}}}|
}}{{Languages/Lang|als|{{{1|}}}|
}}{{Languages/Lang|ase|{{{1|}}}|
}}{{Languages/Lang|smn|{{{1|}}}|
}}{{Languages/Lang|an|{{{1|}}}|
}}{{Languages/Lang|rup|{{{1|}}}|
}}{{Languages/Lang|roa-rup|{{{1|}}}|
}}{{Languages/Lang|frp|{{{1|}}}|
}}{{Languages/Lang|ast|{{{1|}}}|
}}{{Languages/Lang|atj|{{{1|}}}|
}}{{Languages/Lang|gn|{{{1|}}}|
}}{{Languages/Lang|ay|{{{1|}}}|
}}{{Languages/Lang|az|{{{1|}}}|
}}{{Languages/Lang|abs|{{{1|}}}|
}}{{Languages/Lang|gor|{{{1|}}}|
}}{{Languages/Lang|id|{{{1|}}}|
}}{{Languages/Lang|ms|{{{1|}}}|
}}{{Languages/Lang|ban|{{{1|}}}|
}}{{Languages/Lang|bm|{{{1|}}}|
}}{{Languages/Lang|nan|{{{1|}}}|
}}{{Languages/Lang|map-bms|{{{1|}}}|
}}{{Languages/Lang|zh-min-nan|{{{1|}}}|
}}{{Languages/Lang|bjn|{{{1|}}}|
}}{{Languages/Lang|btm|{{{1|}}}|
}}{{Languages/Lang|bbc|{{{1|}}}|
}}{{Languages/Lang|bbc-latn|{{{1|}}}|
}}{{Languages/Lang|sje|{{{1|}}}|
}}{{Languages/Lang|bcl|{{{1|}}}|
}}{{Languages/Lang|bi|{{{1|}}}|
}}{{Languages/Lang|bar|{{{1|}}}|
}}{{Languages/Lang|bs|{{{1|}}}|
}}{{Languages/Lang|brh|{{{1|}}}|
}}{{Languages/Lang|br|{{{1|}}}|
}}{{Languages/Lang|en-ca|{{{1|}}}|
}}{{Languages/Lang|en-gb|{{{1|}}}|
}}{{Languages/Lang|cps|{{{1|}}}|
}}{{Languages/Lang|ca|{{{1|}}}|
}}{{Languages/Lang|ceb|{{{1|}}}|
}}{{Languages/Lang|cs|{{{1|}}}|
}}{{Languages/Lang|ch|{{{1|}}}|
}}{{Languages/Lang|cbk-zam|{{{1|}}}|
}}{{Languages/Lang|ny|{{{1|}}}|
}}{{Languages/Lang|sn|{{{1|}}}|
}}{{Languages/Lang|tum|{{{1|}}}|
}}{{Languages/Lang|cho|{{{1|}}}|
}}{{Languages/Lang|sei|{{{1|}}}|
}}{{Languages/Lang|co|{{{1|}}}|
}}{{Languages/Lang|cy|{{{1|}}}|
}}{{Languages/Lang|da|{{{1|}}}|
}}{{Languages/Lang|se|{{{1|}}}|
}}{{Languages/Lang|pdc|{{{1|}}}|
}}{{Languages/Lang|de|{{{1|}}}|
}}{{Languages/Lang|de-formal|{{{1|}}}|
}}{{Languages/Lang|nv|{{{1|}}}|
}}{{Languages/Lang|dsb|{{{1|}}}|
}}{{Languages/Lang|na|{{{1|}}}|
}}{{Languages/Lang|dtp|{{{1|}}}|
}}{{Languages/Lang|mh|{{{1|}}}|
}}{{Languages/Lang|et|{{{1|}}}|
}}{{Languages/Lang|egl|{{{1|}}}|
}}{{Languages/Lang|eml|{{{1|}}}|
}}{{Languages/Lang|en|{{{1|}}}|
}}{{Languages/Lang|es|{{{1|}}}|
}}{{Languages/Lang|es-formal|{{{1|}}}|
}}{{Languages/Lang|es-419|{{{1|}}}|
}}{{Languages/Lang|eo|{{{1|}}}|
}}{{Languages/Lang|ext|{{{1|}}}|
}}{{Languages/Lang|eu|{{{1|}}}|
}}{{Languages/Lang|ee|{{{1|}}}|
}}{{Languages/Lang|hif|{{{1|}}}|
}}{{Languages/Lang|hif-latn|{{{1|}}}|
}}{{Languages/Lang|fo|{{{1|}}}|
}}{{Languages/Lang|fr|{{{1|}}}|
}}{{Languages/Lang|frc|{{{1|}}}|
}}{{Languages/Lang|fy|{{{1|}}}|
}}{{Languages/Lang|ff|{{{1|}}}|
}}{{Languages/Lang|fur|{{{1|}}}|
}}{{Languages/Lang|gv|{{{1|}}}|
}}{{Languages/Lang|ga|{{{1|}}}|
}}{{Languages/Lang|sm|{{{1|}}}|
}}{{Languages/Lang|gag|{{{1|}}}|
}}{{Languages/Lang|gd|{{{1|}}}|
}}{{Languages/Lang|gl|{{{1|}}}|
}}{{Languages/Lang|aln|{{{1|}}}|
}}{{Languages/Lang|ki|{{{1|}}}|
}}{{Languages/Lang|gom-latn|{{{1|}}}|
}}{{Languages/Lang|ha|{{{1|}}}|
}}{{Languages/Lang|haw|{{{1|}}}|
}}{{Languages/Lang|ho|{{{1|}}}|
}}{{Languages/Lang|hsb|{{{1|}}}|
}}{{Languages/Lang|hr|{{{1|}}}|
}}{{Languages/Lang|hrx|{{{1|}}}|
}}{{Languages/Lang|io|{{{1|}}}|
}}{{Languages/Lang|ig|{{{1|}}}|
}}{{Languages/Lang|ilo|{{{1|}}}|
}}{{Languages/Lang|hil|{{{1|}}}|
}}{{Languages/Lang|ia|{{{1|}}}|
}}{{Languages/Lang|ie|{{{1|}}}|
}}{{Languages/Lang|ike-latn|{{{1|}}}|
}}{{Languages/Lang|ik|{{{1|}}}|
}}{{Languages/Lang|bto|{{{1|}}}|
}}{{Languages/Lang|zu|{{{1|}}}|
}}{{Languages/Lang|xh|{{{1|}}}|
}}{{Languages/Lang|is|{{{1|}}}|
}}{{Languages/Lang|it|{{{1|}}}|
}}{{Languages/Lang|jv|{{{1|}}}|
}}{{Languages/Lang|rmf|{{{1|}}}|
}}{{Languages/Lang|smj|{{{1|}}}|
}}{{Languages/Lang|jut|{{{1|}}}|
}}{{Languages/Lang|kbp|{{{1|}}}|
}}{{Languages/Lang|kea|{{{1|}}}|
}}{{Languages/Lang|kl|{{{1|}}}|
}}{{Languages/Lang|pam|{{{1|}}}|
}}{{Languages/Lang|kr|{{{1|}}}|
}}{{Languages/Lang|krl|{{{1|}}}|
}}{{Languages/Lang|csb|{{{1|}}}|
}}{{Languages/Lang|kw|{{{1|}}}|
}}{{Languages/Lang|rw|{{{1|}}}|
}}{{Languages/Lang|krj|{{{1|}}}|
}}{{Languages/Lang|rn|{{{1|}}}|
}}{{Languages/Lang|sw|{{{1|}}}|
}}{{Languages/Lang|kiu|{{{1|}}}|
}}{{Languages/Lang|kg|{{{1|}}}|
}}{{Languages/Lang|avk|{{{1|}}}|
}}{{Languages/Lang|ses|{{{1|}}}|
}}{{Languages/Lang|ht|{{{1|}}}|
}}{{Languages/Lang|kri|{{{1|}}}|
}}{{Languages/Lang|gcr|{{{1|}}}|
}}{{Languages/Lang|ku|{{{1|}}}|
}}{{Languages/Lang|ku-latn|{{{1|}}}|
}}{{Languages/Lang|fkv|{{{1|}}}|
}}{{Languages/Lang|kj|{{{1|}}}|
}}{{Languages/Lang|lad|{{{1|}}}|
}}{{Languages/Lang|jbo|{{{1|}}}|
}}{{Languages/Lang|lld|{{{1|}}}|
}}{{Languages/Lang|ltg|{{{1|}}}|
}}{{Languages/Lang|la|{{{1|}}}|
}}{{Languages/Lang|lv|{{{1|}}}|
}}{{Languages/Lang|lzz|{{{1|}}}|
}}{{Languages/Lang|to|{{{1|}}}|
}}{{Languages/Lang|lb|{{{1|}}}|
}}{{Languages/Lang|nia|{{{1|}}}|
}}{{Languages/Lang|lt|{{{1|}}}|
}}{{Languages/Lang|lij|{{{1|}}}|
}}{{Languages/Lang|li|{{{1|}}}|
}}{{Languages/Lang|ln|{{{1|}}}|
}}{{Languages/Lang|lfn|{{{1|}}}|
}}{{Languages/Lang|liv|{{{1|}}}|
}}{{Languages/Lang|olo|{{{1|}}}|
}}{{Languages/Lang|lg|{{{1|}}}|
}}{{Languages/Lang|lmo|{{{1|}}}|
}}{{Languages/Lang|mad|{{{1|}}}|
}}{{Languages/Lang|hu|{{{1|}}}|
}}{{Languages/Lang|hu-formal|{{{1|}}}|
}}{{Languages/Lang|vmf|{{{1|}}}|
}}{{Languages/Lang|mg|{{{1|}}}|
}}{{Languages/Lang|mt|{{{1|}}}|
}}{{Languages/Lang|mi|{{{1|}}}|
}}{{Languages/Lang|mrh|{{{1|}}}|
}}{{Languages/Lang|srq|{{{1|}}}|
}}{{Languages/Lang|arn|{{{1|}}}|
}}{{Languages/Lang|fit|{{{1|}}}|
}}{{Languages/Lang|min|{{{1|}}}|
}}{{Languages/Lang|cdo|{{{1|}}}|
}}{{Languages/Lang|mwl|{{{1|}}}|
}}{{Languages/Lang|lus|{{{1|}}}|
}}{{Languages/Lang|mus|{{{1|}}}|
}}{{Languages/Lang|fj|{{{1|}}}|
}}{{Languages/Lang|nah|{{{1|}}}|
}}{{Languages/Lang|nap|{{{1|}}}|
}}{{Languages/Lang|nl|{{{1|}}}|
}}{{Languages/Lang|nl-informal|{{{1|}}}|
}}{{Languages/Lang|nds-nl|{{{1|}}}|
}}{{Languages/Lang|cr|{{{1|}}}|
}}{{Languages/Lang|niu|{{{1|}}}|
}}{{Languages/Lang|frr|{{{1|}}}|
}}{{Languages/Lang|nb|{{{1|}}}|
}}{{Languages/Lang|pih|{{{1|}}}|
}}{{Languages/Lang|nn|{{{1|}}}|
}}{{Languages/Lang|nrm|{{{1|}}}|
}}{{Languages/Lang|nov|{{{1|}}}|
}}{{Languages/Lang|nys|{{{1|}}}|
}}{{Languages/Lang|uz-latn|{{{1|}}}|
}}{{Languages/Lang|uz|{{{1|}}}|
}}{{Languages/Lang|oc|{{{1|}}}|
}}{{Languages/Lang|om|{{{1|}}}|
}}{{Languages/Lang|ng|{{{1|}}}|
}}{{Languages/Lang|de-at|{{{1|}}}|
}}{{Languages/Lang|hz|{{{1|}}}|
}}{{Languages/Lang|pfl|{{{1|}}}|
}}{{Languages/Lang|pag|{{{1|}}}|
}}{{Languages/Lang|ami|{{{1|}}}|
}}{{Languages/Lang|pap|{{{1|}}}|
}}{{Languages/Lang|pcd|{{{1|}}}|
}}{{Languages/Lang|jam|{{{1|}}}|
}}{{Languages/Lang|pms|{{{1|}}}|
}}{{Languages/Lang|nds|{{{1|}}}|
}}{{Languages/Lang|pdt|{{{1|}}}|
}}{{Languages/Lang|pl|{{{1|}}}|
}}{{Languages/Lang|pt|{{{1|}}}|
}}{{Languages/Lang|pt-br|{{{1|}}}|
}}{{Languages/Lang|prg|{{{1|}}}|
}}{{Languages/Lang|aa|{{{1|}}}|
}}{{Languages/Lang|kaa|{{{1|}}}|
}}{{Languages/Lang|kk-latn|{{{1|}}}|
}}{{Languages/Lang|kk-tr|{{{1|}}}|
}}{{Languages/Lang|crh|{{{1|}}}|
}}{{Languages/Lang|crh-latn|{{{1|}}}|
}}{{Languages/Lang|ty|{{{1|}}}|
}}{{Languages/Lang|ksh|{{{1|}}}|
}}{{Languages/Lang|rgn|{{{1|}}}|
}}{{Languages/Lang|ro|{{{1|}}}|
}}{{Languages/Lang|rmy|{{{1|}}}|
}}{{Languages/Lang|rm|{{{1|}}}|
}}{{Languages/Lang|qug|{{{1|}}}|
}}{{Languages/Lang|qu|{{{1|}}}|
}}{{Languages/Lang|sms|{{{1|}}}|
}}{{Languages/Lang|xsy|{{{1|}}}|
}}{{Languages/Lang|szy|{{{1|}}}|
}}{{Languages/Lang|sg|{{{1|}}}|
}}{{Languages/Lang|sc|{{{1|}}}|
}}{{Languages/Lang|sdc|{{{1|}}}|
}}{{Languages/Lang|sli|{{{1|}}}|
}}{{Languages/Lang|de-ch|{{{1|}}}|
}}{{Languages/Lang|sco|{{{1|}}}|
}}{{Languages/Lang|trv|{{{1|}}}|
}}{{Languages/Lang|stq|{{{1|}}}|
}}{{Languages/Lang|st|{{{1|}}}|
}}{{Languages/Lang|nso|{{{1|}}}|
}}{{Languages/Lang|tn|{{{1|}}}|
}}{{Languages/Lang|sq|{{{1|}}}|
}}{{Languages/Lang|scn|{{{1|}}}|
}}{{Languages/Lang|simple|{{{1|}}}|
}}{{Languages/Lang|loz|{{{1|}}}|
}}{{Languages/Lang|ss|{{{1|}}}|
}}{{Languages/Lang|sk|{{{1|}}}|
}}{{Languages/Lang|sl|{{{1|}}}|
}}{{Languages/Lang|srn|{{{1|}}}|
}}{{Languages/Lang|szl|{{{1|}}}|
}}{{Languages/Lang|so|{{{1|}}}|
}}{{Languages/Lang|sr-el|{{{1|}}}|
}}{{Languages/Lang|sh|{{{1|}}}|
}}{{Languages/Lang|su|{{{1|}}}|
}}{{Languages/Lang|sv|{{{1|}}}|
}}{{Languages/Lang|fi|{{{1|}}}|
}}{{Languages/Lang|shy-latn|{{{1|}}}|
}}{{Languages/Lang|tl|{{{1|}}}|
}}{{Languages/Lang|kab|{{{1|}}}|
}}{{Languages/Lang|roa-tara|{{{1|}}}|
}}{{Languages/Lang|rif|{{{1|}}}|
}}{{Languages/Lang|shi-latn|{{{1|}}}|
}}{{Languages/Lang|shi|{{{1|}}}|
}}{{Languages/Lang|tt-latn|{{{1|}}}|
}}{{Languages/Lang|tay|{{{1|}}}|
}}{{Languages/Lang|tet|{{{1|}}}|
}}{{Languages/Lang|din|{{{1|}}}|
}}{{Languages/Lang|vi|{{{1|}}}|
}}{{Languages/Lang|tpi|{{{1|}}}|
}}{{Languages/Lang|tg-latn|{{{1|}}}|
}}{{Languages/Lang|tly|{{{1|}}}|
}}{{Languages/Lang|chy|{{{1|}}}|
}}{{Languages/Lang|ve|{{{1|}}}|
}}{{Languages/Lang|aeb-latn|{{{1|}}}|
}}{{Languages/Lang|tr|{{{1|}}}|
}}{{Languages/Lang|tk|{{{1|}}}|
}}{{Languages/Lang|tru|{{{1|}}}|
}}{{Languages/Lang|tw|{{{1|}}}|
}}{{Languages/Lang|sju|{{{1|}}}|
}}{{Languages/Lang|ug-latn|{{{1|}}}|
}}{{Languages/Lang|vot|{{{1|}}}|
}}{{Languages/Lang|za|{{{1|}}}|
}}{{Languages/Lang|vec|{{{1|}}}|
}}{{Languages/Lang|vep|{{{1|}}}|
}}{{Languages/Lang|ruq|{{{1|}}}|
}}{{Languages/Lang|ruq-latn|{{{1|}}}|
}}{{Languages/Lang|vo|{{{1|}}}|
}}{{Languages/Lang|vro|{{{1|}}}|
}}{{Languages/Lang|fiu-vro|{{{1|}}}|
}}{{Languages/Lang|wa|{{{1|}}}|
}}{{Languages/Lang|vls|{{{1|}}}|
}}{{Languages/Lang|war|{{{1|}}}|
}}{{Languages/Lang|wo|{{{1|}}}|
}}{{Languages/Lang|ts|{{{1|}}}|
}}{{Languages/Lang|yo|{{{1|}}}|
}}{{Languages/Lang|diq|{{{1|}}}|
}}{{Languages/Lang|sgs|{{{1|}}}|
}}{{Languages/Lang|zea|{{{1|}}}|
}}{{Languages/Lang|bat-smg|{{{1|}}}|
}}{{Languages/Lang|grc|{{{1|}}}|
}}{{Languages/Lang|el|{{{1|}}}|
}}{{Languages/Lang|pnt|{{{1|}}}|
}}{{Languages/Lang|av|{{{1|}}}|
}}{{Languages/Lang|ady|{{{1|}}}|
}}{{Languages/Lang|ady-cyrl|{{{1|}}}|
}}{{Languages/Lang|kbd-cyrl|{{{1|}}}|
}}{{Languages/Lang|kbd|{{{1|}}}|
}}{{Languages/Lang|ab|{{{1|}}}|
}}{{Languages/Lang|ba|{{{1|}}}|
}}{{Languages/Lang|be|{{{1|}}}|
}}{{Languages/Lang|be-tarask|{{{1|}}}|
}}{{Languages/Lang|be-x-old|{{{1|}}}|
}}{{Languages/Lang|bxr|{{{1|}}}|
}}{{Languages/Lang|bg|{{{1|}}}|
}}{{Languages/Lang|ruq-cyrl|{{{1|}}}|
}}{{Languages/Lang|inh|{{{1|}}}|
}}{{Languages/Lang|os|{{{1|}}}|
}}{{Languages/Lang|sjd|{{{1|}}}|
}}{{Languages/Lang|kv|{{{1|}}}|
}}{{Languages/Lang|crh-cyrl|{{{1|}}}|
}}{{Languages/Lang|krc|{{{1|}}}|
}}{{Languages/Lang|kum|{{{1|}}}|
}}{{Languages/Lang|ky|{{{1|}}}|
}}{{Languages/Lang|mrj|{{{1|}}}|
}}{{Languages/Lang|kk|{{{1|}}}|
}}{{Languages/Lang|kk-cyrl|{{{1|}}}|
}}{{Languages/Lang|kk-kz|{{{1|}}}|
}}{{Languages/Lang|lbe|{{{1|}}}|
}}{{Languages/Lang|lez|{{{1|}}}|
}}{{Languages/Lang|mk|{{{1|}}}|
}}{{Languages/Lang|mdf|{{{1|}}}|
}}{{Languages/Lang|mo|{{{1|}}}|
}}{{Languages/Lang|mn|{{{1|}}}|
}}{{Languages/Lang|mhr|{{{1|}}}|
}}{{Languages/Lang|ce|{{{1|}}}|
}}{{Languages/Lang|koi|{{{1|}}}|
}}{{Languages/Lang|rue|{{{1|}}}|
}}{{Languages/Lang|ru|{{{1|}}}|
}}{{Languages/Lang|sah|{{{1|}}}|
}}{{Languages/Lang|sty|{{{1|}}}|
}}{{Languages/Lang|cu|{{{1|}}}|
}}{{Languages/Lang|sr-ec|{{{1|}}}|
}}{{Languages/Lang|sr|{{{1|}}}|
}}{{Languages/Lang|tt-cyrl|{{{1|}}}|
}}{{Languages/Lang|tt|{{{1|}}}|
}}{{Languages/Lang|tly|{{{1|}}}|
}}{{Languages/Lang|tg-cyrl|{{{1|}}}|
}}{{Languages/Lang|tg|{{{1|}}}|
}}{{Languages/Lang|alt|{{{1|}}}|
}}{{Languages/Lang|tyv|{{{1|}}}|
}}{{Languages/Lang|udm|{{{1|}}}|
}}{{Languages/Lang|uz-cyrl|{{{1|}}}|
}}{{Languages/Lang|uk|{{{1|}}}|
}}{{Languages/Lang|xal|{{{1|}}}|
}}{{Languages/Lang|cv|{{{1|}}}|
}}{{Languages/Lang|myv|{{{1|}}}|
}}{{Languages/Lang|xmf|{{{1|}}}|
}}{{Languages/Lang|ka|{{{1|}}}|
}}{{Languages/Lang|hyw|{{{1|}}}|
}}{{Languages/Lang|hy|{{{1|}}}|
}}{{Languages/Lang|anp|{{{1|}}}|
}}{{Languages/Lang|awa|{{{1|}}}|
}}{{Languages/Lang|ks-deva|{{{1|}}}|
}}{{Languages/Lang|ks|{{{1|}}}|
}}{{Languages/Lang|gom-deva|{{{1|}}}|
}}{{Languages/Lang|gom|{{{1|}}}|
}}{{Languages/Lang|dty|{{{1|}}}|
}}{{Languages/Lang|new|{{{1|}}}|
}}{{Languages/Lang|ne|{{{1|}}}|
}}{{Languages/Lang|pi|{{{1|}}}|
}}{{Languages/Lang|bho|{{{1|}}}|
}}{{Languages/Lang|bh|{{{1|}}}|
}}{{Languages/Lang|mr|{{{1|}}}|
}}{{Languages/Lang|rwr|{{{1|}}}|
}}{{Languages/Lang|mai|{{{1|}}}|
}}{{Languages/Lang|sa|{{{1|}}}|
}}{{Languages/Lang|hi|{{{1|}}}|
}}{{Languages/Lang|as|{{{1|}}}|
}}{{Languages/Lang|bn|{{{1|}}}|
}}{{Languages/Lang|bpy|{{{1|}}}|
}}{{Languages/Lang|pa|{{{1|}}}|
}}{{Languages/Lang|or|{{{1|}}}|
}}{{Languages/Lang|gu|{{{1|}}}|
}}{{Languages/Lang|ta|{{{1|}}}|
}}{{Languages/Lang|te|{{{1|}}}|
}}{{Languages/Lang|kn|{{{1|}}}|
}}{{Languages/Lang|tcy|{{{1|}}}|
}}{{Languages/Lang|ml|{{{1|}}}|
}}{{Languages/Lang|si|{{{1|}}}|
}}{{Languages/Lang|mni|{{{1|}}}|
}}{{Languages/Lang|th|{{{1|}}}|
}}{{Languages/Lang|lo|{{{1|}}}|
}}{{Languages/Lang|dz|{{{1|}}}|
}}{{Languages/Lang|bo|{{{1|}}}|
}}{{Languages/Lang|kjp|{{{1|}}}|
}}{{Languages/Lang|bug|{{{1|}}}|
}}{{Languages/Lang|shn|{{{1|}}}|
}}{{Languages/Lang|mnw|{{{1|}}}|
}}{{Languages/Lang|my|{{{1|}}}|
}}{{Languages/Lang|km|{{{1|}}}|
}}{{Languages/Lang|nod|{{{1|}}}|
}}{{Languages/Lang|ban-bali|{{{1|}}}|
}}{{Languages/Lang|sat|{{{1|}}}|
}}{{Languages/Lang|chr|{{{1|}}}|
}}{{Languages/Lang|ike-cans|{{{1|}}}|
}}{{Languages/Lang|iu|{{{1|}}}|
}}{{Languages/Lang|got|{{{1|}}}|
}}{{Languages/Lang|tzm|{{{1|}}}|
}}{{Languages/Lang|zgh|{{{1|}}}|
}}{{Languages/Lang|shi-tfng|{{{1|}}}|
}}{{Languages/Lang|ti|{{{1|}}}|
}}{{Languages/Lang|am|{{{1|}}}|
}}{{Languages/Lang|ii|{{{1|}}}|
}}{{Languages/Lang|ko-kp|{{{1|}}}|
}}{{Languages/Lang|ko|{{{1|}}}|
}}{{Languages/Lang|ja|{{{1|}}}|
}}{{Languages/Lang|zh|{{{1|}}}|
}}{{Languages/Lang|zh-tw|{{{1|}}}|
}}{{Languages/Lang|zh-cn|{{{1|}}}|
}}{{Languages/Lang|zh-sg|{{{1|}}}|
}}{{Languages/Lang|zh-mo|{{{1|}}}|
}}{{Languages/Lang|zh-hans|{{{1|}}}|
}}{{Languages/Lang|zh-hant|{{{1|}}}|
}}{{Languages/Lang|zh-hk|{{{1|}}}|
}}{{Languages/Lang|zh-my|{{{1|}}}|
}}{{Languages/Lang|wuu|{{{1|}}}|
}}{{Languages/Lang|hak|{{{1|}}}|
}}{{Languages/Lang|lzh|{{{1|}}}|
}}{{Languages/Lang|zh-classical|{{{1|}}}|
}}{{Languages/Lang|zh-yue|{{{1|}}}|
}}{{Languages/Lang|yue|{{{1|}}}|
}}{{Languages/Lang|gan|{{{1|}}}|
}}{{Languages/Lang|gan-hant|{{{1|}}}|
}}{{Languages/Lang|gan-hans|{{{1|}}}|
}}{{Languages/Lang|yi|{{{1|}}}|
}}{{Languages/Lang|he|{{{1|}}}|
}}{{Languages/Lang|ug-arab|{{{1|}}}|
}}{{Languages/Lang|ar|{{{1|}}}|
}}{{Languages/Lang|ug|{{{1|}}}|
}}{{Languages/Lang|ur|{{{1|}}}|
}}{{Languages/Lang|ary|{{{1|}}}|
}}{{Languages/Lang|bqi|{{{1|}}}|
}}{{Languages/Lang|ps|{{{1|}}}|
}}{{Languages/Lang|pnb|{{{1|}}}|
}}{{Languages/Lang|aeb-arab|{{{1|}}}|
}}{{Languages/Lang|aeb|{{{1|}}}|
}}{{Languages/Lang|azb|{{{1|}}}|
}}{{Languages/Lang|arq|{{{1|}}}|
}}{{Languages/Lang|sd|{{{1|}}}|
}}{{Languages/Lang|bcc|{{{1|}}}|
}}{{Languages/Lang|bgn|{{{1|}}}|
}}{{Languages/Lang|skr-arab|{{{1|}}}|
}}{{Languages/Lang|skr|{{{1|}}}|
}}{{Languages/Lang|fa|{{{1|}}}|
}}{{Languages/Lang|kk-arab|{{{1|}}}|
}}{{Languages/Lang|kk-cn|{{{1|}}}|
}}{{Languages/Lang|ku-arab|{{{1|}}}|
}}{{Languages/Lang|ks-arab|{{{1|}}}|
}}{{Languages/Lang|khw|{{{1|}}}|
}}{{Languages/Lang|ckb|{{{1|}}}|
}}{{Languages/Lang|sdh|{{{1|}}}|
}}{{Languages/Lang|glk|{{{1|}}}|
}}{{Languages/Lang|luz|{{{1|}}}|
}}{{Languages/Lang|ota|{{{1|}}}|
}}{{Languages/Lang|lki|{{{1|}}}|
}}{{Languages/Lang|lrc|{{{1|}}}|
}}{{Languages/Lang|mzn|{{{1|}}}|
}}{{Languages/Lang|arz|{{{1|}}}|
}}{{Languages/Lang|arc|{{{1|}}}|
}}{{Languages/Lang|dv|{{{1|}}}|
}}{{Languages/Lang|nqo|{{{1|}}}|
clear={{{clear|both}}}}}}}</includeonly><noinclude>
{{Documentation}}
[[Category:Language link templates| ]]
[[Category:Translation]]
</noinclude>
28e85d00580c67cc8d5aa506aab59e2ef082c90d
Template:Nmbox
10
46
79
78
2024-04-30T01:03:21Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<templatestyles src="Template:Nmbox/styles.css" />
<div class="nmbox noprint">{{#if: {{{image|}}}{{{header|}}}
|<div class="nmbox-header">{{#if: {{{image|}}}|<div class="nmbox-image">{{{image|}}}</div>}}{{{header|}}}
</div>}}
{{#if:{{{text|}}}|<div class="nmbox-text">{{{text|}}}</div>}}
</div><noinclude>{{documentation}}</noinclude>
e557c052be3962967d3c2ad6a2f5a99a2ca4a8a4
Template:Nmbox/styles.css
10
47
81
80
2024-04-30T01:03:21Z
Axxyyy
2
1 revision imported
text
text/plain
.nmbox {
clear: both;
background: #F6F9ED;
border: 1px solid #AAA;
box-sizing: border-box;
margin: 2px 0;
padding: 0;
}
.nmbox * {
box-sizing: border-box;
}
.nmbox-header {
background: #EEF3E2;
padding: 4px 0.5em;
font-weight: bold;
text-align: center;
white-space: nowrap
}
.nmbox-image {
display: inline-block;
}
.nmbox-text {
border-top: 1px solid #AAA;
width: 100%;
padding: 4px 0.5em;
}
@media screen and (min-width: 768px) {
.nmbox-header {
display: table-cell;
border-right: 1px solid #AAA;
width: 1%;
}
.nmbox-text {
border-top: none;
display: table-cell;
}
}
24c6a01b07b9d9cf44e7f110e8173db233e986e8
Template:Languages/Lang
10
48
83
82
2024-04-30T01:03:21Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
{{#if: {{{1|}}}
| {{#if: {{#if: {{{all|}}}
| 1
| {{#ifexist: {{#if: {{{2|}}}
| {{{2|}}}
| {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}}
}}/{{{1|}}}
| 1
}}
}}
| '''·''' <span lang="{{#if:{{{name|}}}|en|{{BCP47|{{Uselang}}}}}}" title="{{{name|{{#language:{{{1|}}}|{{Uselang}}}}}}} ({{{1}}})"><bdi lang="{{BCP47|{{{1}}}}}" dir="{{Dir|{{{1}}}}}" class="plainlinks autonym" style="white-space:nowrap">{{#ifeq: {{#if: {{{2|}}}
| {{{2|}}}
| {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}}
}}/{{{1|}}} | {{FULLPAGENAME}}
| [[:{{FULLPAGENAME}}|{{{autonym|{{#language:{{{1|}}}}}}}}]]<!-- selflink -->
| [{{FULLURL:{{#if: {{{2|}}}
| {{{2|}}}
| {{#if: {{NAMESPACE}} | {{NAMESPACE}}: }}{{BASEPAGENAME}}
}}/{{{1|}}}|uselang={{{1|}}}}} {{{autonym|{{#language:{{{1|}}}}}}}}]<!-- real link, set interface to be in the language of the page -->
}}</bdi></span>
}}
}}<noinclude>{{Documentation}}</noinclude>
844f59be1b2e87d8921f28439ccadfaffe35a6e6
Template:Documentation subpage
10
49
85
84
2024-04-30T01:03:22Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#if:{{IsDocSubpage|override={{{override|doc}}}}}
| <!--doc subpage--></includeonly>{{#ifeq:{{{doc-notice|show}}}|show
| {{Ombox|type=notice|image=[[File:Edit-copy green.svg|40px|link=]]
|text='''This is a [[Help:Template documentation|documentation]] [[mw:Help:Subpages|subpage]] for {{#if:{{{1|}}}
| {{{1}}}
| [[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]
}}.'''<br/> It contains usage information, [[Categorization|categories]], and other content that is not part of the original<!--
--> {{#if: {{{text2|}}}
| {{{text2|}}}
| {{#if: {{{text1|}}}
| {{{text1|}}}
| {{#ifeq: {{SUBJECTSPACE}} | {{ns:User}}
| {{lc:{{SUBJECTSPACE}}}} template page
| {{#if: {{SUBJECTSPACE}}
| {{lc:{{SUBJECTSPACE}}}} page
| article
}}
}}
}}
}}.
}}
<!--If not on a doc subpage, do nothing-->}}{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}{{#if: {{{inhibit|}}}
| <!--Skip-->
| <includeonly>{{#ifexist: {{NAMESPACE}}:{{BASEPAGENAME}}
| [[Category:{{#switch: {{SUBJECTSPACE}}
|Template=Template
|Module=Module
|User=User
|#default=Template
}} documentation pages{{#translation:}}]]
| [[Category:Documentation subpages without corresponding pages{{#translation:}}]]
}}</includeonly>
}}<includeonly>
}}</includeonly><noinclude>{{Documentation}}<!--Add categories and interwikis to the /doc subpage, not here!--></noinclude>
a5300bf1d640c82dada9be2a2b099a0d7b76f123
Template:IsDocSubpage
10
50
87
86
2024-04-30T01:03:22Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<onlyinclude><includeonly>{{#ifexpr: (
{{#ifeq:{{lc:{{SUBPAGENAME}}}}|{{lc:{{{override|doc}}}}}|1|0}} or (
{{#ifeq:{{lc:{{#titleparts:{{FULLPAGENAME}}|-1|-2}}}}|{{lc:{{{override|doc}}}}}|1|0}}
and {{#if:{{#invoke:Template translation|getLanguageSubpage}}|1|0}}
)
)<!--
-->|{{{true|1}}}<!--
-->|{{{false|}}}<!--
-->}}</includeonly></onlyinclude>
{{Documentation}}
<!-- Add categories to the /doc subpage and interwikis in Wikidata, not here! -->
e60f69b26953d441bf5b76229c9222f16c042ae6
Template:Sandbox other
10
51
89
88
2024-04-30T01:03:23Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<!--
-->{{#if:<!--
-->{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}<!--
-->|sandbox<!--
-->|1<!--
-->}}<!--
-->{{#ifeq:{{SUBPAGENAME}}|doc<!--
-->|1<!--
-->}}<!--
-->{{#invoke:String|match<!--
-->|{{PAGENAME}}<!--
-->|/sandbox/styles.css$<!--
-->|plain = false<!--
-->|nomatch = <!--
-->}}<!--
-->|{{{1|}}}<!--
-->|{{{2|}}}<!--
-->}}<!--
--><noinclude>
{{documentation}}
</noinclude>
10ab2a8619ffe82e75daf68783e80852419e186a
Template:Int Usage
10
52
91
90
2024-04-30T01:03:23Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
{{TranslateThis|source = Template:Int Usage
|ha = Amfani
|sv = Användning
|ay = Apnaqaña
|kri = Aw fɔ yuz am
|bm = Baarakɛcogo
|lb = Benotzung
|ku = Bikaranîn
|da = Brug
|nb,nn,no = Bruk
|gd = Cleachdadh
|cy = Defnydd
|lg = Enkozesa
|eu = Erabilera
|sm = Fa’aoga
|mg = Fampiasana
|om = Fayyadama
|uz = Foydalanish
|af,li,nl,nl-be,nl-informal,vl,zea = Gebruik
|fy = Gebrûk
|hu = Használat
|bar = Heagnomma
|lus = Hman dan
|haw = Hoʻohana
|rw = Ikoreshwa
|so = Isticmaalka
|az = İstifadə
|ht = Itilizasyon
|gn = Jeporu rehegua
|et = Kasutamine
|fi = Käyttö
|hmn = Kev siv
|bs,cnr,hr,sh,sh-el,sh-latn,sr-el = Korištenje
|ln = Kosalela yango
|ny = Kugwiritsa ntchito
|diq = Kullanım|tr = Kullanım
|sn = Kushandiswa
|lt = Lietošana
|yo = Lilo
|ts = Matirhiselo
|sw = Matumizi
|lv = Naudojimas
|is = Notkun
|ig = Ojiji
|ceb,fil,tl = Paggamit
|su = Pamakéan
|ilo = Panagusar
|jv = Panggunaan
|id,ms = Penggunaan
|sk = Použitie
|cs = Používání
|ak,tw = Sɛnea wɔde di dwuma
|vi = Sử dụng
|st = Tšebeliso
|nso = Tšhomišo
|zu = Ukusetshenziswa
|xh = Ukusetyenziswa
|tk = Ulanylyşy
|sl = Uporaba
|en,en-au,en-ca,en-gb,en-ie,en-in,en-nz,en-us = Usage
|ga = Úsáid
|es,es-419,gl,pt,pt-br,pt-pt,qu = Uso
|co = Usu
|la = Ut uti
|fr,fr-be,fr-ca,fr-ch,fr-fr,fr-lu,frc = Utilisation
|ca = Utilització
|ro = Utilizare
|it = Utilizzo
|eo = Uzado
|mt = Użu
|pl = Użycie
|als,de,de-formal,de-at,de-ch,de-de,gsw = Verwendung
|mi = Whakamahinga
|ee = Zazã
|el = Χρήση|pnt = Χρήση
|be = Выкарыстанне
|be-tarask = Выкарыстаньне
|uk = Використання
|ru = Использование
|tg = Истифода
|kk = Қолданылуы
|ky = Колдонылышы
|tt = Куллану
|sh-cyrl,sh-ec,sr,sr-cyrl,sr-ec = Коришћење
|bg = Употреба|mk = Употреба
|mn = Хэрэглээ
|hy,hyw = օգտագործումը
|ka,xmf = გამოყენება
|as = ব্যৱহাৰ
|bn = ব্যবহার
|doi = प्रयोग करना
|bh,bho = प्रयोग के बारे में बतावल गइल बा
|hi,mai,ne = प्रयोग
|sa = प्रयोगः
|mr = वापर
|pa = ਵਰਤੋਂ
|or = ବ୍ୟବହାର
|ml = ഉപയോഗം
|gu = ઉપયોગ
|kn = ಬಳಕೆ
|ta = பயன்பாடு
|te = వాడుక
|si = භාවිතය
|my = အသုံးပြုပုံ
|th = การใช้งาน
|km = ការប្រើប្រាស់
|lo = ການນຳໃຊ້
|mni = ꯁꯤꯖꯤꯟꯅꯕꯥ
|am = አጠቃቀም
|ti = ኣጠቓቕማ
|ko = 사용법
|ja = 使い方<!--or 使用法-->
|yue,zh,zh-cn,zh-hans,zh-hant,zh-hk,zh-mo,zh-sg,zh-tw = 用法
|he = שימוש
|yi = באַניץ
|ar,ary,arz = استخدام
|sd,ur = استعمال
|uy = ئىشلىتىلىشى
|ckb = بەکارهێنان
|fa = کاربرد
|ps = کارول
|dv = ބޭނުން ކުރުމެވެ
}}<noinclude>{{doc}}</noinclude>
8daedbcbcd7444e04c6824104aa49074edba81d6
Template:TranslateThis
10
53
93
92
2024-04-30T01:03:23Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<includeonly>{{#invoke:TranslateThis|main}}</includeonly><noinclude>{{documentation}}</noinclude>
ec67859e2d049878c88308d50739380e842ceb87
Template:Translation category/doc
10
54
95
94
2024-04-30T01:03:24Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
{{Documentation subpage}}
<!-- Add categories where indicated at the bottom of this page and interwikis at Wikidata -->
== {{int Usage}} ==
Should be included alone on /Translations subpage of each translatable category.
If Category:Foo has been [[Meta:Internationalization guidelines|internationalized with Translate syntax]], Category:Foo/Translations should only contain {{tlx|Translation category}}.
== Purpose ==
Placed at ''Category:Foo/Translations'', this template will:
* Display a language bar to navigate to translations (Category:Foo/en, Category:Foo/pt, …).
* Display Category:Foo description.
* Categorize inside ''/Translations'' subcategory of each category in which Category:Foo is categorized (i.e. if Category:Foo is categorized in Category:Bar, Category:Foo/Translations will be categorized in Category:Bar/Translations).
* Categorize inside ''Category:Foo'', indexed as “/Translations” (<code><nowiki>[[Category:Foo|/Translations]]}}</nowiki></code>).
<includeonly>{{Sandbox other||
<!-- Categories below this line; interwikis at Wikidata -->
[[Category:Internationalization templates]]
}}</includeonly>
1f8927c0cf99d11ce8f95176ae5177ca082f503a
Template:CfF Community Board Seats
10
55
97
96
2024-04-30T01:03:25Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<languages/>
<translate>
<!--T:1-->
Pages related to [[<tvar name="1">Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Community Board seats</tvar>|the 2021 call for feedback about community seats]] in the Board of Trustees of Wikimedia Foundation.
</translate>
{{#if:{{#translation:}}|[[Category:CfF Community Board Seats/Translations|{{#translation:}}]]}}
[[Category:Wikimedia Foundation Board of Trustees{{#translation:}}]]
2ec7de376b07fd269d635bb215a499a1fed5c578
Template:CfF Community Board Seats/en
10
56
99
98
2024-04-30T01:03:25Z
Axxyyy
2
1 revision imported
wikitext
text/x-wiki
<languages/>
Pages related to [[Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Community Board seats|the 2021 call for feedback about community seats]] in the Board of Trustees of Wikimedia Foundation.
{{#if:{{#translation:}}|[[Category:CfF Community Board Seats/Translations|{{#translation:}}]]}}
[[Category:Wikimedia Foundation Board of Trustees{{#translation:}}]]
9b9f881d7e406778a4a1d41dc975e333ff2dc925
File:Module-Crafting.lua
6
57
100
2024-04-30T20:39:16Z
Axxyyy
2
Crafting module
wikitext
text/x-wiki
== Summary ==
Crafting module
3b32f7ef8bb9b343dc17cdeeca92e82d4a98d8bb
File:Module-Recipe table.lua
6
58
101
2024-04-30T20:39:50Z
Axxyyy
2
Recipe table module
wikitext
text/x-wiki
== Summary ==
Recipe table module
5fe4c551b6d951ba26db8f2258677ca72bb008ff
File:Module-Inventory slot.lua
6
59
102
2024-04-30T20:42:15Z
Axxyyy
2
Inventory slot module
wikitext
text/x-wiki
== Summary ==
Inventory slot module
18396ab2331be608c070519dff96452f3d097edf
File:Module-ProcessArgs.lua
6
60
103
2024-04-30T20:42:49Z
Axxyyy
2
ProcessArgs module
wikitext
text/x-wiki
== Summary ==
ProcessArgs module
4bf5bed0992daba6e4c4a6f5c7785c4751361d9d
File:Module-Grid.lua
6
61
104
2024-04-30T20:46:53Z
Axxyyy
2
Grid module
wikitext
text/x-wiki
== Summary ==
Grid module
9054747fd972275b55e1a3903edfb295b858fd0d
File:Module-Sprite.lua
6
62
105
2024-04-30T21:27:02Z
Axxyyy
2
Sprite module
wikitext
text/x-wiki
== Summary ==
Sprite module
d82d4d4269f3a96951c004bfe7e0d0ad54170708
File:Module-UI.lua
6
63
106
2024-04-30T21:31:08Z
Axxyyy
2
UI module
wikitext
text/x-wiki
== Summary ==
UI module
9e6cdbdba096159b927cae54da81f64c1f7fab5d
Module:Crafting
828
64
107
2024-05-01T14:26:04Z
Axxyyy
2
Created page with "local p = {} local i18n = { colored = 'Colored', coloredDyes = { 'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Dandelion Yellow', 'Lime Dye', 'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye', 'Lapis Lazuli', 'Cocoa Beans', 'Cactus Green', 'Rose Red', 'Ink Sac', }, categoryIngredientUsage = 'Category:Recipe using $1', categoryRecipeType = 'Category:$1 recipe', categoryUpcoming = 'Category:Upcoming', itemBlockOfQuartz = 'Block of Quartz',..."
Scribunto
text/plain
local p = {}
local i18n = {
colored = 'Colored',
coloredDyes = {
'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Dandelion Yellow', 'Lime Dye',
'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye',
'Lapis Lazuli', 'Cocoa Beans', 'Cactus Green', 'Rose Red', 'Ink Sac',
},
categoryIngredientUsage = 'Category:Recipe using $1',
categoryRecipeType = 'Category:$1 recipe',
categoryUpcoming = 'Category:Upcoming',
itemBlockOfQuartz = 'Block of Quartz',
itemBoneMeal = 'Bone Meal',
itemBrownMushroom = 'Brown Mushroom',
itemCharcoal = 'Charcoal',
itemCoal = 'Coal',
itemColoredDye = 'Colored Dye',
itemDye = 'Dye',
itemMushroom = 'Mushroom',
itemQuartzBlock = 'Quartz Block',
itemRedMushroom = 'Red Mushroom',
itemStone = 'Stone',
moduleArgs = [[Module:ProcessArgs]],
moduleRecipe = [[Module:Recipe table]],
moduleSlot = [[Module:Inventory slot]],
stoneVariants = { 'Stone', 'Andesite', 'Granite', 'Diorite' },
type = 'Crafting',
variantPages = {
'Andesite', 'Banner', 'Bed', 'Diorite', 'Firework Star', 'Granite',
'Pressure Plate', 'Sand', 'Sandstone', 'Shield', 'Slab', 'Stained Glass Pane',
'Stained Glass', 'Stairs', 'Stone Bricks', 'Wood Planks', 'Wood', 'Wool',
},
}
p.i18n = i18n
local slot = require( i18n.moduleSlot )
local recipeTable = require( i18n.moduleRecipe ).table
local cArgVals = { 'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3' }
p.cArgVals = cArgVals
function p.table( f )
local args = f
if f == mw.getCurrentFrame() then
args = require( i18n.moduleArgs ).merge( true )
else
f = mw.getCurrentFrame()
end
-- Automatic shapeless positioning
if args[1] then
args.shapeless = 1
if args[7] then
args.A1 = args[1]
args.B1 = args[2]
args.C1 = args[3]
args.A2 = args[4]
args.B2 = args[5]
args.C2 = args[6]
if args[8] then
-- ◼◼◼ ◼◼◼
-- ◼◼◼ OR ◼◼◼
-- ◼◼◼ ◼◼◻
args.A3 = args[7]
args.B3 = args[8]
args.C3 = args[9]
if args[9] then
local identical = true
for i = 1, 8 do
if args[i] ~= args[i + 1] then
identical = false
break
end
end
if identical then
args.shapeless = nil
end
end
else
-- ◼◼◼
-- ◼◼◼
-- ◻◼◻
args.B3 = args[7]
end
elseif args[2] then
args.A2 = args[1]
args.B2 = args[2]
if args[5] then
-- ◻◻◻ ◻◻◻
-- ◼◼◼ OR ◼◼◼
-- ◼◼◼ ◼◼◻
args.C2 = args[3]
args.A3 = args[4]
args.B3 = args[5]
args.C3 = args[6]
elseif args[4] then
-- ◻◻◻
-- ◼◼◻
-- ◼◼◻
args.A3 = args[3]
args.B3 = args[4]
else
-- ◻◻◻ ◻◻◻
-- ◼◼◻ OR ◼◼◻
-- ◻◼◻ ◻◻◻
args.B3 = args[3]
end
else
-- ◻◻◻
-- ◻◼◻
-- ◻◻◻
args.B2 = args[1]
args.shapeless = nil
end
for i = 1, 9 do
args[i] = nil
end
end
-- Create recipe table, and list of ingredients
local out, ingredientSets = recipeTable( args, {
uiFunc = 'craftingTable',
type = i18n.type,
ingredientArgs = cArgVals,
outputArgs = { 'Output' },
} )
local title = mw.title.getCurrentTitle()
if args.nocat == '1' or title.namespace ~= 0 or title.isSubpage then
return out
end
local categories = {}
local cI = 1
if args.upcoming then
categories[cI] = '[[' .. i18n.categoryUpcoming .. ']]'
cI = cI + 1
end
if args.type then
categories[cI] = '[[' .. i18n.categoryRecipeType:gsub( '%$1', args.type ) .. ']]'
cI = cI + 1
end
if args.ignoreusage ~= '1' then
-- Create ingredient categories for DPL
local usedNames = {}
for _, ingredientSet in pairs( ingredientSets ) do
for _, ingredient in pairs( ingredientSet ) do
local name = ingredient.name
if not ingredient.mod and not usedNames[name] and name ~= title.text then
-- List each dye individually as they have their own pages
if
name == slot.i18n.prefixes.any .. ' ' .. i18n.itemDye or
name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemDye or
name == slot.i18n.prefixes.any .. ' ' .. i18n.itemColoredDye or
name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemColoredDye
then
if not name:find( i18n.colored ) then
categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', i18n.itemBoneMeal ) .. ']]'
cI = cI + 1
usedNames[i18n.itemBoneMeal] = true
end
for _, dye in pairs( i18n.coloredDyes ) do
categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', dye ) .. ']]'
cI = cI + 1
usedNames[dye] = true
end
-- List stone variants individually as they have their own pages
elseif
name == slot.i18n.prefixes.any .. ' ' .. i18n.itemStone or
name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemStone
then
for _, stone in pairs( i18n.stoneVariants ) do
categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', stone ) .. ']]'
cI = cI + 1
usedNames[stone] = true
end
else
-- Merge item variants which use a single page
if
name == slot.i18n.prefixes.any .. ' ' .. i18n.itemMushroom or
name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemMushroom or
name == i18n.itemRedMushroom or
name == i18n.itemBrownMushroom
then name = i18n.itemMushroom
elseif name == i18n.itemCharcoal then name = i18n.itemCoal
elseif name:find( ' ' .. i18n.itemQuartzBlock .. '$' ) then name = i18n.itemBlockOfQuartz
else
for _, variant in pairs( i18n.variantPages ) do
if name:find( ' ' .. variant .. '$' ) then
name = variant
break
end
end
-- Remove prefixes
for _, prefix in pairs( slot.i18n.prefixes ) do
if name:find( '^' .. prefix .. ' ' ) then
name = name:gsub( '^' .. prefix .. ' ', '' )
break
end
end
end
if not usedNames[name] then
categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', name ) .. ']]'
cI = cI + 1
usedNames[name] = true
end
end
end
end
end
end
return out, table.concat( categories, '' )
end
return p
ac086ea676edeb0c5df6f89488b0b33c9cf3cded
Module:Recipe table
828
65
108
2024-05-01T14:32:19Z
Axxyyy
2
Created page with "local m = {} local i18n = { headingDescription = 'Description', headingIngredients = 'Ingredients', headingName = 'Name', headingRecipe = '$1 recipe', moduleSlot = [[Module:Inventory slot]], moduleUi = [[Module:UI]], separator = ' +', setSeparator = ' or', tableDescription = '$1 recipes', } local slot = require( i18n.moduleSlot ) local prefixes = slot.i18n.prefixes --[[Merges a list, or inserts a string or table into a table --]] local function merg..."
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = [[Module:Inventory slot]],
moduleUi = [[Module:UI]],
separator = ' +',
setSeparator = ' or',
tableDescription = '$1 recipes',
}
local slot = require( i18n.moduleSlot )
local prefixes = slot.i18n.prefixes
--[[Merges a list, or inserts a string
or table into a table
--]]
local function mergeList( parentTable, content )
local i = #parentTable + 1
if content[1] then
-- Merge list into table
for _, v in ipairs( content ) do
parentTable[i] = v
i = i + 1
end
else
-- Add strings or tables to table
parentTable[i] = content
end
end
--[[Loops through the input and output args and parses them into a single table,
with alias reference data
Identical slots reuse the same table, to allow them to be compared like strings
--]]
local function parseRecipeArgs( args, ingredientArgVals, outputArgs )
local recipeArgs = {}
for _, arg in pairs( ingredientArgVals ) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs( outputArgs ) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs( recipeArgs ) do
if frameText then
local randomise
for _, oArg in pairs( outputArgs ) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText( frameText, randomise, true )
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
--[[Creates a link (with mod name if specified) with
any prefix moved outside
--]]
function m.prefixedLink( name, mod )
local prefix = ''
for _, thisPrefix in pairs( prefixes ) do
if name:find( '^' .. thisPrefix .. ' ' ) then
prefix = thisPrefix .. ' '
name = name:sub( #prefix + 1 )
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name )
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
--[[Creates sets of unique items from a set of slots, using the
original alias name if available
Each set of items are the frames of that slot
--]]
function m.makeItemSets( argVals, parsedArgs )
local usedItems = {}
local function addItem( items, arg, frame, alias )
if alias then
frame = alias.frame
end
local uniqName = ( frame.mod or '' ) .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs( argVals ) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem( items, arg, subframe, alias )
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem( items, arg, frame, alias )
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
--[[Creates links for the name/ingredients columns out of
item sets, with the appropriate separators, and optionally
"Any" and "Matching" prefixes removed.
--]]
function m.makeItemLinks( itemSets, removePrefixes )
local links = {}
for i, itemSet in ipairs( itemSets ) do
local linkSet = {}
for i2, item in ipairs( itemSet ) do
local name = item.name
if removePrefixes then
-- Remove prefixes and uppercase first letter
name = name
:gsub( '^' .. prefixes.any .. ' ', '' )
:gsub( '^' .. prefixes.matching .. ' ', '' )
:gsub( '^%l', string.upper )
end
linkSet[i2] = m.prefixedLink( name, item.mod )
end
links[i] = table.concat( linkSet, i18n.setSeparator .. '<br>' )
end
return table.concat( links, i18n.separator .. '<br>' )
end
-- Creates the table header
function m.makeHeader( recipeType, class, showName, showDescription, multirow )
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = 'class="unsortable"|'
end
local header = table.concat( {
' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub( '%$1', recipeType ) .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. i18n.headingRecipe:gsub( '%$1', recipeType ) ..
descriptionCell
}, '\n' )
return header
end
-- Create the contents for the name cell
function m.makeNameCell( name, outputArgs, parsedRecipeArgs, upcoming )
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks( m.makeItemSets( outputArgs, parsedRecipeArgs ), true )
end
if upcoming then
if upcoming:find( '%[%[' ) then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat( cell, '<br>' )
end
-- Create the contents for the ingredients cell
function m.makeIngredientsCell( ingredients, itemSets )
return ingredients or m.makeItemLinks( itemSets )
end
--[[Main entry point, creates the table with the relevant DPL vars
to allow multiple table rows from separate template calls
Also returns the unique ingredients, for categorisation purposes in
Module:Crafting
--]]
function m.table( args, settings )
local f = mw.getCurrentFrame()
local multirow = f:callParserFunction( '#dplvar', 'recipetable-multirow' )
if multirow == '' then
multirow = nil
end
local showHead = args.head
local showFoot = args.foot
if multirow then
showHead = nil
elseif showHead and not showFoot then
multirow = true
f:callParserFunction( '#dplvar:set', 'recipetable-multirow', '1' )
else
showHead = true
showFoot = true
end
local showName = args.showname
local showDescription = args.showdescription
if multirow then
if showHead then
showName = args.showname or '1'
f:callParserFunction( '#dplvar:set', 'recipetable-name', showName, 'recipetable-description', showDescription )
else
showName = f:callParserFunction( '#dplvar', 'recipetable-name' )
showDescription = f:callParserFunction( '#dplvar', 'recipetable-description' )
end
end
if showName ~= '1' then
showName = nil
end
if showDescription == '' then
showDescription = nil
end
local out = {}
if showHead then
out[1] = m.makeHeader( settings.type, args.class, showName, showDescription, multirow )
end
local ingredientArgVals = settings.ingredientArgs
local outputArgs = settings.outputArgs
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs( args, ingredientArgVals, outputArgs )
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell( args.name, outputArgs, parsedRecipeArgs, args.upcoming )
end
local ingredientsItemSets = m.makeItemSets( ingredientArgVals, parsedRecipeArgs )
cells[#cells + 1] = '|' .. m.makeIngredientsCell( args.ingredients, ingredientsItemSets )
cells[#cells + 1] = '|style="padding:1px"|' .. require( i18n.moduleUi )[settings.uiFunc]( args )
if showDescription then
cells[#cells + 1] = '|' .. ( args.description or '' )
end
out[#out + 1] = table.concat( cells, '\n' )
out[#out + 1] = showFoot and '|}' or ''
if showFoot then
f:callParserFunction( '#dplvar:set',
'recipetable-multirow', '',
'recipetable-name', '',
'recipetable-description', ''
)
end
return table.concat( out, '\n|-\n' ), ingredientsItemSets
end
return m
20dd66cae4722d0b20bc83f73a7df89df07ca54c
115
108
2024-05-01T17:03:59Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = [[Module:Inventory slot]],
moduleUi = [[Module:UI]],
separator = ' +',
setSeparator = ' or',
tableDescription = '$1 recipes',
}
local slot = require( i18n.moduleSlot )
local prefixes = slot.i18n.prefixes
--[[Merges a list, or inserts a string
or table into a table
--]]
local function mergeList( parentTable, content )
local i = #parentTable + 1
if content[1] then
-- Merge list into table
for _, v in ipairs( content ) do
parentTable[i] = v
i = i + 1
end
else
-- Add strings or tables to table
parentTable[i] = content
end
end
--[[Loops through the input and output args and parses them into a single table,
with alias reference data
Identical slots reuse the same table, to allow them to be compared like strings
--]]
local function parseRecipeArgs( args, ingredientArgVals, outputArgs )
local recipeArgs = {}
for _, arg in pairs( ingredientArgVals ) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs( outputArgs ) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs( recipeArgs ) do
if frameText then
local randomise
for _, oArg in pairs( outputArgs ) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText( frameText, randomise, true )
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
--[[Creates a link (with mod name if specified) with
any prefix moved outside
--]]
function m.prefixedLink( name, mod )
local prefix = ''
for _, thisPrefix in pairs( prefixes ) do
if name:find( '^' .. thisPrefix .. ' ' ) then
prefix = thisPrefix .. ' '
name = name:sub( #prefix + 1 )
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name )
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
--[[Creates sets of unique items from a set of slots, using the
original alias name if available
Each set of items are the frames of that slot
--]]
function m.makeItemSets( argVals, parsedArgs )
local usedItems = {}
local function addItem( items, arg, frame, alias )
if alias then
frame = alias.frame
end
local uniqName = ( frame.mod or '' ) .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs( argVals ) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem( items, arg, subframe, alias )
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem( items, arg, frame, alias )
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
--[[Creates links for the name/ingredients columns out of
item sets, with the appropriate separators, and optionally
"Any" and "Matching" prefixes removed.
--]]
function m.makeItemLinks( itemSets, removePrefixes )
local links = {}
for i, itemSet in ipairs( itemSets ) do
local linkSet = {}
for i2, item in ipairs( itemSet ) do
local name = item.name
if removePrefixes then
-- Remove prefixes and uppercase first letter
name = name
:gsub( '^' .. prefixes.any .. ' ', '' )
:gsub( '^' .. prefixes.matching .. ' ', '' )
:gsub( '^%l', string.upper )
end
linkSet[i2] = m.prefixedLink( name, item.mod )
end
links[i] = table.concat( linkSet, i18n.setSeparator .. '<br>' )
end
return table.concat( links, i18n.separator .. '<br>' )
end
-- Creates the table header
function m.makeHeader( recipeType, class, showName, showDescription, multirow )
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = 'class="unsortable"|'
end
local header = table.concat( {
' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub( '%$1', recipeType ) .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. i18n.headingRecipe:gsub( '%$1', recipeType ) ..
descriptionCell
}, '\n' )
return header
end
-- Create the contents for the name cell
function m.makeNameCell( name, outputArgs, parsedRecipeArgs, upcoming )
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks( m.makeItemSets( outputArgs, parsedRecipeArgs ), true )
end
if upcoming then
if upcoming:find( '%[%[' ) then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat( cell, '<br>' )
end
-- Create the contents for the ingredients cell
function m.makeIngredientsCell( ingredients, itemSets )
return ingredients or m.makeItemLinks( itemSets )
end
--[[Main entry point, creates the table with the relevant DPL vars
to allow multiple table rows from separate template calls
Also returns the unique ingredients, for categorisation purposes in
Module:Crafting
--]]
function m.table( args, settings )
local f = mw.getCurrentFrame()
local multirow = f:callParserFunction( 'recipetable-multirow' )
if multirow == '' then
multirow = nil
end
local showHead = args.head
local showFoot = args.foot
if multirow then
showHead = nil
elseif showHead and not showFoot then
multirow = true
f:callParserFunction( '#dplvar:set', 'recipetable-multirow', '1' )
else
showHead = true
showFoot = true
end
local showName = args.showname
local showDescription = args.showdescription
if multirow then
if showHead then
showName = args.showname or '1'
f:callParserFunction( '#dplvar:set', 'recipetable-name', showName, 'recipetable-description', showDescription )
else
showName = f:callParserFunction( '#dplvar', 'recipetable-name' )
showDescription = f:callParserFunction( '#dplvar', 'recipetable-description' )
end
end
if showName ~= '1' then
showName = nil
end
if showDescription == '' then
showDescription = nil
end
local out = {}
if showHead then
out[1] = m.makeHeader( settings.type, args.class, showName, showDescription, multirow )
end
local ingredientArgVals = settings.ingredientArgs
local outputArgs = settings.outputArgs
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs( args, ingredientArgVals, outputArgs )
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell( args.name, outputArgs, parsedRecipeArgs, args.upcoming )
end
local ingredientsItemSets = m.makeItemSets( ingredientArgVals, parsedRecipeArgs )
cells[#cells + 1] = '|' .. m.makeIngredientsCell( args.ingredients, ingredientsItemSets )
cells[#cells + 1] = '|style="padding:1px"|' .. require( i18n.moduleUi )[settings.uiFunc]( args )
if showDescription then
cells[#cells + 1] = '|' .. ( args.description or '' )
end
out[#out + 1] = table.concat( cells, '\n' )
out[#out + 1] = showFoot and '|}' or ''
if showFoot then
f:callParserFunction( '#dplvar:set',
'recipetable-multirow', '',
'recipetable-name', '',
'recipetable-description', ''
)
end
return table.concat( out, '\n|-\n' ), ingredientsItemSets
end
return m
d624ce3b847f1159a44f6a3f08ff6d73038946fe
116
115
2024-05-01T17:04:32Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = [[Module:Inventory slot]],
moduleUi = [[Module:UI]],
separator = ' +',
setSeparator = ' or',
tableDescription = '$1 recipes',
}
local slot = require( i18n.moduleSlot )
local prefixes = slot.i18n.prefixes
--[[Merges a list, or inserts a string
or table into a table
--]]
local function mergeList( parentTable, content )
local i = #parentTable + 1
if content[1] then
-- Merge list into table
for _, v in ipairs( content ) do
parentTable[i] = v
i = i + 1
end
else
-- Add strings or tables to table
parentTable[i] = content
end
end
--[[Loops through the input and output args and parses them into a single table,
with alias reference data
Identical slots reuse the same table, to allow them to be compared like strings
--]]
local function parseRecipeArgs( args, ingredientArgVals, outputArgs )
local recipeArgs = {}
for _, arg in pairs( ingredientArgVals ) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs( outputArgs ) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs( recipeArgs ) do
if frameText then
local randomise
for _, oArg in pairs( outputArgs ) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText( frameText, randomise, true )
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
--[[Creates a link (with mod name if specified) with
any prefix moved outside
--]]
function m.prefixedLink( name, mod )
local prefix = ''
for _, thisPrefix in pairs( prefixes ) do
if name:find( '^' .. thisPrefix .. ' ' ) then
prefix = thisPrefix .. ' '
name = name:sub( #prefix + 1 )
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name )
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
--[[Creates sets of unique items from a set of slots, using the
original alias name if available
Each set of items are the frames of that slot
--]]
function m.makeItemSets( argVals, parsedArgs )
local usedItems = {}
local function addItem( items, arg, frame, alias )
if alias then
frame = alias.frame
end
local uniqName = ( frame.mod or '' ) .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs( argVals ) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem( items, arg, subframe, alias )
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem( items, arg, frame, alias )
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
--[[Creates links for the name/ingredients columns out of
item sets, with the appropriate separators, and optionally
"Any" and "Matching" prefixes removed.
--]]
function m.makeItemLinks( itemSets, removePrefixes )
local links = {}
for i, itemSet in ipairs( itemSets ) do
local linkSet = {}
for i2, item in ipairs( itemSet ) do
local name = item.name
if removePrefixes then
-- Remove prefixes and uppercase first letter
name = name
:gsub( '^' .. prefixes.any .. ' ', '' )
:gsub( '^' .. prefixes.matching .. ' ', '' )
:gsub( '^%l', string.upper )
end
linkSet[i2] = m.prefixedLink( name, item.mod )
end
links[i] = table.concat( linkSet, i18n.setSeparator .. '<br>' )
end
return table.concat( links, i18n.separator .. '<br>' )
end
-- Creates the table header
function m.makeHeader( recipeType, class, showName, showDescription, multirow )
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = 'class="unsortable"|'
end
local header = table.concat( {
' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub( '%$1', recipeType ) .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. i18n.headingRecipe:gsub( '%$1', recipeType ) ..
descriptionCell
}, '\n' )
return header
end
-- Create the contents for the name cell
function m.makeNameCell( name, outputArgs, parsedRecipeArgs, upcoming )
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks( m.makeItemSets( outputArgs, parsedRecipeArgs ), true )
end
if upcoming then
if upcoming:find( '%[%[' ) then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat( cell, '<br>' )
end
-- Create the contents for the ingredients cell
function m.makeIngredientsCell( ingredients, itemSets )
return ingredients or m.makeItemLinks( itemSets )
end
--[[Main entry point, creates the table with the relevant DPL vars
to allow multiple table rows from separate template calls
Also returns the unique ingredients, for categorisation purposes in
Module:Crafting
--]]
function m.table( args, settings )
local f = mw.getCurrentFrame()
local multirow = f:callParserFunction( '#dplvar', 'recipetable-multirow' )
if multirow == '' then
multirow = nil
end
local showHead = args.head
local showFoot = args.foot
if multirow then
showHead = nil
elseif showHead and not showFoot then
multirow = true
f:callParserFunction( '#dplvar:set', 'recipetable-multirow', '1' )
else
showHead = true
showFoot = true
end
local showName = args.showname
local showDescription = args.showdescription
if multirow then
if showHead then
showName = args.showname or '1'
f:callParserFunction( '#dplvar:set', 'recipetable-name', showName, 'recipetable-description', showDescription )
else
showName = f:callParserFunction( '#dplvar', 'recipetable-name' )
showDescription = f:callParserFunction( '#dplvar', 'recipetable-description' )
end
end
if showName ~= '1' then
showName = nil
end
if showDescription == '' then
showDescription = nil
end
local out = {}
if showHead then
out[1] = m.makeHeader( settings.type, args.class, showName, showDescription, multirow )
end
local ingredientArgVals = settings.ingredientArgs
local outputArgs = settings.outputArgs
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs( args, ingredientArgVals, outputArgs )
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell( args.name, outputArgs, parsedRecipeArgs, args.upcoming )
end
local ingredientsItemSets = m.makeItemSets( ingredientArgVals, parsedRecipeArgs )
cells[#cells + 1] = '|' .. m.makeIngredientsCell( args.ingredients, ingredientsItemSets )
cells[#cells + 1] = '|style="padding:1px"|' .. require( i18n.moduleUi )[settings.uiFunc]( args )
if showDescription then
cells[#cells + 1] = '|' .. ( args.description or '' )
end
out[#out + 1] = table.concat( cells, '\n' )
out[#out + 1] = showFoot and '|}' or ''
if showFoot then
f:callParserFunction( '#dplvar:set',
'recipetable-multirow', '',
'recipetable-name', '',
'recipetable-description', ''
)
end
return table.concat( out, '\n|-\n' ), ingredientsItemSets
end
return m
20dd66cae4722d0b20bc83f73a7df89df07ca54c
Template:Crafting
10
66
109
2024-05-01T14:36:16Z
Axxyyy
2
Created page with "<noinclude>{{doc}}</noinclude> {{doc/start}} {{lua}} Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you. By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><n..."
wikitext
text/x-wiki
<noinclude>{{doc}}</noinclude>
{{doc/start}}
{{lua}}
Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you.
By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki></tt> in the first template of the table to hide the Name column. You also need to set <tt><nowiki>{{{foot=1}}}</nowiki></tt> in the last template of the table.
Displaying a shapeless recipe can be accomplished by simply leaving out the grid positions for all ingredients. If the recipe is shapeless and uses less than 5 slots, the template will automatically arrange the items into the bottom-left square, indicating that the recipe can be used in the inventory crafting area.
Example usage:
<pre>
{{Crafting
|head=1
|B2=Coal
|B3=Stick
|Output=Torch,4
}}
{{Crafting
|Blaze Powder
|Gunpowder
|Coal
|Output=Fire Charge,3
}}
{{Crafting
|A1= Coal |B1= Coal |C1= Coal
|A2= Coal |B2= Coal |C2= Coal
|A3= Coal |B3= Coal |C3= Coal
|Output=Block of Coal
|upcoming=1
}}
{{Crafting
|name=[[Pickaxe]]
|ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s
|A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B2=Stick
|B3=Stick
|Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe
|foot=1
}}
</pre>
produces:
{{Crafting
|head=1
|B2=Coal
|B3=Stick
|Output=Torch,4
}}
{{Crafting
|Blaze Powder
|Gunpowder
|Coal
|Output=Fire Charge,3
}}
{{Crafting
|A1= Coal |B1= Coal |C1= Coal
|A2= Coal |B2= Coal |C2= Coal
|A3= Coal |B3= Coal |C3= Coal
|Output=Block of Coal
|upcoming=1
}}
{{Crafting
|name=[[Pickaxe]]
|ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s
|A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B2=Stick
|B3=Stick
|Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe
|foot=1
}}
{{doc/end}}
c4dac3a92f024793c070b3edf1f13e545e92c42e
Template:Doc/start
10
67
110
2024-05-01T14:45:42Z
Axxyyy
2
Created page with "<includeonly><!-- -->{{#vardefine: nodoc | {{{nodoc}}} }}<!-- -->{{#vardefine: baddoc | {{{baddoc}}} }}<!-- -->{{#if: {{{1|}}} | {{#ifeq: {{SUBPAGENAME}} | doc | | <div style="height: 1em; clear: both"></div> }} }}<!-- --><div style="margin: 0em auto 1em; background-color: #{{#if: {{{nodoc|}}} | F9EAEA | {{#if: {{{baddoc|}}} | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"> <div style="padding-bottom: 3px; border-bottom: 1px solid #AAAAAA; margin-bot..."
wikitext
text/x-wiki
<includeonly><!--
-->{{#vardefine: nodoc | {{{nodoc}}} }}<!--
-->{{#vardefine: baddoc | {{{baddoc}}} }}<!--
-->{{#if: {{{1|}}} | {{#ifeq: {{SUBPAGENAME}} | doc | | <div style="height: 1em; clear: both"></div> }} }}<!--
--><div style="margin: 0em auto 1em; background-color: #{{#if: {{{nodoc|}}} | F9EAEA | {{#if: {{{baddoc|}}} | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;">
<div style="padding-bottom: 3px; border-bottom: 1px solid #AAAAAA; margin-bottom: 1ex;"><!--
-->[[File:Template-{{#if: {{{nodoc|}}} | no | {{#if: {{{baddoc|}}} | bad }} }}info.png|50px]] <span style="font-weight: bold; font-size: 125%;">Documentation</span><!--
--><div class="plainlinks" style="float: right; margin-left: 5px">[[{{fullurl:{{FULLPAGENAME}}|action=purge}} purge]]</div></div><!--
-->{{#if: {{{nodoc|}}} | '''This template has no documentation. If you know how to use this template, please add some.'''<!--
-->{{#ifeq: {{SUBPAGENAME}} | doc | | [[Category:Templates with no documentation|{{BASEPAGENAME}}]]}} |<!--
-->{{#if: {{{baddoc|}}} | '''This template's documentation has been marked as bad. Please improve or add to it.'''<!--
-->{{#ifeq: {{SUBPAGENAME}} | doc | | [[Category:Templates with bad documentation|{{BASEPAGENAME}}]]}}<!--
-->}} }}</includeonly><noinclude>
{{doc|Template:Doc/start/doc}}</noinclude>
133556afe46009f50e58fbe3a4a5bee4c1198253
Template:Doc
10
68
111
2024-05-01T14:46:21Z
Axxyyy
2
Created page with "<noinclude>{{doc/start}} To use, create a sub-page from the template called '''doc''', put {{tl|doc/start}} at the start of your documentation, and {{tl|doc/end}} at the end. Go back to your main template page and put <noinclude>{{tl|doc}}</noinclude> on a newline after the end of the template. /doc pages will automatically be added to [[:Category:Documentation templates]]. == Optional parameters == === clear === If your main template page has floating cont..."
wikitext
text/x-wiki
<noinclude>{{doc/start}}
To use, create a sub-page from the template called '''doc''', put {{tl|doc/start}} at the start of your documentation, and {{tl|doc/end}} at the end.
Go back to your main template page and put <noinclude>{{tl|doc}}</noinclude> on a newline after the end of the template. /doc pages will automatically be added to [[:Category:Documentation templates]].
== Optional parameters ==
=== clear ===
If your main template page has floating content and you would like to stop it going over the documentation, put {{tl|doc/start|clear}} instead of {{tl|doc/start}} on your documentation page.<br>
This is also useful for templates not using <includeonly>, as it will put some space between the template and the documentation box.
=== nodoc=1 ===
If a template has no documentation and you don't know how to use it, put {{tl|doc/start|nodoc{{=}}1}} (or if the template needs clear as well, {{tl|doc/start|clear|nodoc{{=}}1}}) instead of {{tl|doc/start}} on your documentation page.<br>
The documentation's background will become red to make it more noticeable, and the page will be added to [[:Category:Templates with no documentation]].
=== baddoc=1 ===
Similar to nodoc, this is used to mark templates that '''do''' have documentation, but it isn't very good. This can mean it doesn't have enough examples, doesn't explain all the functions properly, or doesn't explain the point of the template properly.<br>
The documentation's background will become yellow to make it more noticeable, and the page will be added to [[:Category:Templates with bad documentation]].
If both nodoc and baddoc are specified, baddoc will be ignored.
</div>
[[Category:Documentation templates|*]]
</noinclude><includeonly>{{/doc}}</includeonly>
2073857a24bf574b0bdcd2bcf700b5783b3e5dac
Doc/start
0
69
112
2024-05-01T14:57:49Z
Axxyyy
2
Created page with "<includeonly><!-- -->{{#vardefine: nodoc | {{{nodoc}}} }}<!-- -->{{#vardefine: baddoc | {{{baddoc}}} }}<!-- -->{{#if: {{{1|}}} | {{#ifeq: {{SUBPAGENAME}} | doc | | <div style="height: 1em; clear: both"></div> }} }}<!-- --><div style="margin: 0em auto 1em; background-color: #{{#if: {{{nodoc|}}} | F9EAEA | {{#if: {{{baddoc|}}} | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"> <div style="padding-bottom: 3px; border-bottom: 1px solid #AAAAAA; margin-bot..."
wikitext
text/x-wiki
<includeonly><!--
-->{{#vardefine: nodoc | {{{nodoc}}} }}<!--
-->{{#vardefine: baddoc | {{{baddoc}}} }}<!--
-->{{#if: {{{1|}}} | {{#ifeq: {{SUBPAGENAME}} | doc | | <div style="height: 1em; clear: both"></div> }} }}<!--
--><div style="margin: 0em auto 1em; background-color: #{{#if: {{{nodoc|}}} | F9EAEA | {{#if: {{{baddoc|}}} | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;">
<div style="padding-bottom: 3px; border-bottom: 1px solid #AAAAAA; margin-bottom: 1ex;"><!--
-->[[File:Template-{{#if: {{{nodoc|}}} | no | {{#if: {{{baddoc|}}} | bad }} }}info.png|50px]] <span style="font-weight: bold; font-size: 125%;">Documentation</span><!--
--><div class="plainlinks" style="float: right; margin-left: 5px">[[{{fullurl:{{FULLPAGENAME}}|action=purge}} purge]]</div></div><!--
-->{{#if: {{{nodoc|}}} | '''This template has no documentation. If you know how to use this template, please add some.'''<!--
-->{{#ifeq: {{SUBPAGENAME}} | doc | | [[Category:Templates with no documentation|{{BASEPAGENAME}}]]}} |<!--
-->{{#if: {{{baddoc|}}} | '''This template's documentation has been marked as bad. Please improve or add to it.'''<!--
-->{{#ifeq: {{SUBPAGENAME}} | doc | | [[Category:Templates with bad documentation|{{BASEPAGENAME}}]]}}<!--
-->}} }}</includeonly><noinclude>
{{doc|Template:Doc/start/doc}}</noinclude>
133556afe46009f50e58fbe3a4a5bee4c1198253
Doc/end
0
70
113
2024-05-01T14:59:27Z
Axxyyy
2
Created page with "<includeonly></div> <div style="margin: 0 auto; background-color: #{{#ifeq: {{#var: nodoc}} | 1 | F9EAEA | {{#ifeq: {{#var: baddoc}} | 1 | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"><!-- -->{{#ifeq: {{SUBPAGENAME}} | doc |<!-- --><p style="margin: 0">This is the documentation page, it should be transcluded into the main template page. See [[Template:Doc]] for more information.</p>[[Category:Documentation templates|{{BASEPAGENAME}}]] |<!-- --><p cla..."
wikitext
text/x-wiki
<includeonly></div>
<div style="margin: 0 auto; background-color: #{{#ifeq: {{#var: nodoc}} | 1 | F9EAEA | {{#ifeq: {{#var: baddoc}} | 1 | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"><!--
-->{{#ifeq: {{SUBPAGENAME}} | doc |<!--
--><p style="margin: 0">This is the documentation page, it should be transcluded into the main template page. See [[Template:Doc]] for more information.</p>[[Category:Documentation templates|{{BASEPAGENAME}}]] |<!--
--><p class="plainlinks" style="margin: 0">The above documentation is transcluded from [[{{FULLPAGENAME}}/doc]]. <small>([{{fullurl:{{FULLPAGENAME}}/doc|action=edit}} edit] | [{{fullurl:{{FULLPAGENAME}}/doc|action=history}} history])</small></p> }}<!--
--></div></includeonly><noinclude>{{doc}}</noinclude>
3e74ccd6a5228ff608a4b8961415736284b754ab
Template:Extension DPL
10
71
114
2024-05-01T16:54:06Z
DynamicPageList3 extension
5
Autogenerated DynamicPageList3's necessary template for content inclusion.
wikitext
text/x-wiki
<noinclude>This page was automatically created. It serves as an anchor page for all '''[[Special:WhatLinksHere/Template:Extension_DPL|invocations]]''' of [https://www.mediawiki.org/wiki/Special:MyLanguage/Extension:DynamicPageList3 Extension:DynamicPageList3].</noinclude>
087ffd4625ae7b1fea3436ec3f929e82ee739d29
Template:Doc/end
10
72
117
2024-05-02T02:48:06Z
Axxyyy
2
Created page with "<includeonly></div> <div style="margin: 0 auto; background-color: #{{#ifeq: {{#var: nodoc}} | 1 | F9EAEA | {{#ifeq: {{#var: baddoc}} | 1 | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"><!-- -->{{#ifeq: {{SUBPAGENAME}} | doc |<!-- --><p style="margin: 0">This is the documentation page, it should be transcluded into the main template page. See [[Template:Doc]] for more information.</p>[[Category:Documentation templates|{{BASEPAGENAME}}]] |<!-- --><p cla..."
wikitext
text/x-wiki
<includeonly></div>
<div style="margin: 0 auto; background-color: #{{#ifeq: {{#var: nodoc}} | 1 | F9EAEA | {{#ifeq: {{#var: baddoc}} | 1 | F9F2EA | EAF4F9 }} }}; border: 1px solid #AAAAAA; padding: 1em;"><!--
-->{{#ifeq: {{SUBPAGENAME}} | doc |<!--
--><p style="margin: 0">This is the documentation page, it should be transcluded into the main template page. See [[Template:Doc]] for more information.</p>[[Category:Documentation templates|{{BASEPAGENAME}}]] |<!--
--><p class="plainlinks" style="margin: 0">The above documentation is transcluded from [[{{FULLPAGENAME}}/doc]]. <small>([{{fullurl:{{FULLPAGENAME}}/doc|action=edit}} edit] | [{{fullurl:{{FULLPAGENAME}}/doc|action=history}} history])</small></p> }}<!--
--></div></includeonly><noinclude>{{doc}}</noinclude>
3e74ccd6a5228ff608a4b8961415736284b754ab
Template:Crafting/doc
10
73
118
2024-05-02T02:49:59Z
Axxyyy
2
Created page with "{{doc/start}} {{lua}} Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you. By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki..."
wikitext
text/x-wiki
{{doc/start}}
{{lua}}
Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you.
By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki></tt> in the first template of the table to hide the Name column. You also need to set <tt><nowiki>{{{foot=1}}}</nowiki></tt> in the last template of the table.
Displaying a shapeless recipe can be accomplished by simply leaving out the grid positions for all ingredients. If the recipe is shapeless and uses less than 5 slots, the template will automatically arrange the items into the bottom-left square, indicating that the recipe can be used in the inventory crafting area.
Example usage:
<pre>
{{Crafting
|head=1
|B2=Coal
|B3=Stick
|Output=Torch,4
}}
{{Crafting
|Blaze Powder
|Gunpowder
|Coal
|Output=Fire Charge,3
}}
{{Crafting
|A1= Coal |B1= Coal |C1= Coal
|A2= Coal |B2= Coal |C2= Coal
|A3= Coal |B3= Coal |C3= Coal
|Output=Block of Coal
|upcoming=1
}}
{{Crafting
|name=[[Pickaxe]]
|ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s
|A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B2=Stick
|B3=Stick
|Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe
|foot=1
}}
</pre>
produces:
{{#invoke:Crafting|table
|head=1
|B2=Coal
|B3=Stick
|Output=Torch,4
}}
{{#invoke:Crafting|table
|Blaze Powder
|Gunpowder
|Coal
|Output=Fire Charge,3
}}
{{#invoke:Crafting|table
|A1= Coal |B1= Coal |C1= Coal
|A2= Coal |B2= Coal |C2= Coal
|A3= Coal |B3= Coal |C3= Coal
|Output=Block of Coal
|upcoming=1
}}
{{#invoke:Crafting|table
|name=[[Pickaxe]]
|ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s
|A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B2=Stick
|B3=Stick
|Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe
|foot=1
}}
{{doc/end}}
c6ce5e299c50b2f5a76828735bfb159ffd62ba3f
125
118
2024-05-02T16:49:20Z
Axxyyy
2
wikitext
text/x-wiki
{{doc/start}}
{{lua}}
Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you.
By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki></tt> in the first template of the table to hide the Name column. You also need to set <tt><nowiki>{{{foot=1}}}</nowiki></tt> in the last template of the table.
Displaying a shapeless recipe can be accomplished by simply leaving out the grid positions for all ingredients. If the recipe is shapeless and uses less than 5 slots, the template will automatically arrange the items into the bottom-left square, indicating that the recipe can be used in the inventory crafting area.
Example usage:
<pre>
{{Crafting
|head=1
|B2=Coal
|B3=Stick
|Output=Torch,4
}}
{{Crafting
|Blaze Powder
|Gunpowder
|Coal
|Output=Fire Charge,3
}}
{{Crafting
|A1= Coal |B1= Coal |C1= Coal
|A2= Coal |B2= Coal |C2= Coal
|A3= Coal |B3= Coal |C3= Coal
|Output=Block of Coal
|upcoming=1
}}
{{Crafting
|name=[[Pickaxe]]
|ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s
|A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B2=Stick
|B3=Stick
|Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe
|foot=1
}}
</pre>
produces:
{{#invoke:Crafting|table
|head=1
|B2=Coal
|B3=Stick
|Output=Torch,4
}}
{{#invoke:Crafting|table
|Blaze Powder
|Gunpowder
|Coal
|Output=Fire Charge,3
}}
{{#invoke:Crafting|table
|A1= Coal |B1= Coal |C1= Coal
|A2= Coal |B2= Coal |C2= Coal
|A3= Coal |B3= Coal |C3= Coal
|Output=Block of Coal
|upcoming=1
}}
{{#invoke:Crafting|table
|name=[[Pickaxe]]
|ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s
|A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B2=Stick
|B3=Stick
|Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe
|foot=1
}}
{{doc/end}}
5c28312c79a2a582b529f507d54c2c38e51b7130
Template:Crafting
10
66
119
109
2024-05-02T02:51:08Z
Axxyyy
2
wikitext
text/x-wiki
<noinclude>{{doc}}</noinclude>
{{doc/start}}
{{lua}}
Using this template, you can create tables like those commonly used in the “Crafting” and “As a crafting ingredient” sections of articles about blocks and items. It can be used similarly to {{tl|Grid/Crafting Table}}, except it creates the table for you.
By default, the table generates with 3 columns: Name, Ingredients, and the main column containing {{tl|Grid/Crafting Table}}. You can set the parameter <tt><nowiki>{{{mode=noname}}}</nowiki></tt> in the first template of the table to hide the Name column. You also need to set <tt><nowiki>{{{foot=1}}}</nowiki></tt> in the last template of the table.
Displaying a shapeless recipe can be accomplished by simply leaving out the grid positions for all ingredients. If the recipe is shapeless and uses less than 5 slots, the template will automatically arrange the items into the bottom-left square, indicating that the recipe can be used in the inventory crafting area.
Example usage:
<pre>
{{Crafting
|head=1
|B2=Coal
|B3=Stick
|Output=Torch,4
}}
{{Crafting
|Blaze Powder
|Gunpowder
|Coal
|Output=Fire Charge,3
}}
{{Crafting
|A1= Coal |B1= Coal |C1= Coal
|A2= Coal |B2= Coal |C2= Coal
|A3= Coal |B3= Coal |C3= Coal
|Output=Block of Coal
|upcoming=1
}}
{{Crafting
|name=[[Pickaxe]]
|ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s
|A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B2=Stick
|B3=Stick
|Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe
|foot=1
}}
</pre>
produces:
{{#invoke:Crafting|table
|head=1
|B2=Coal
|B3=Stick
|Output=Torch,4
}}
{{#invoke:Crafting|table
|Blaze Powder
|Gunpowder
|Coal
|Output=Fire Charge,3
}}
{{#invoke:Crafting|table
|A1= Coal |B1= Coal |C1= Coal
|A2= Coal |B2= Coal |C2= Coal
|A3= Coal |B3= Coal |C3= Coal
|Output=Block of Coal
|upcoming=1
}}
{{#invoke:Crafting|table
|name=[[Pickaxe]]
|ingredients=[[Stick]]s +<br>[[Wood Planks]] or<br> [[Cobblestone]] or<br>[[Iron Ingot]]s or<br>[[Gold Ingot]]s or<br>[[Diamond]]s
|A1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|C1=Wooden Plank; Cobblestone; Iron Ingot; Gold Ingot; Diamond
|B2=Stick
|B3=Stick
|Output=Wooden Pickaxe; Stone Pickaxe; Iron Pickaxe; Gold Pickaxe; Diamond Pickaxe
|foot=1
}}
{{doc/end}}
59f363e2e936e9645046acd12f78cfdc7872133b
124
119
2024-05-02T16:49:00Z
Axxyyy
2
Replaced content with "<includeonly>{{#invoke:crafting|table}}</includeonly> <noinclude> {{/doc}} [[Category:Templates]] </noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:crafting|table}}</includeonly>
<noinclude>
{{/doc}}
[[Category:Templates]]
</noinclude>
a5d6a0f04e8f53adeacab235b768056a38a1aba4
Module:Crafting
828
64
120
107
2024-05-02T16:32:21Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = "Module:Inventory slot",
moduleUi = "Module:UI",
separator = " +",
setSeparator = " or",
tableDescription = "$1 recipes",
}
local slot = require(i18n.moduleSlot)
local prefixes = slot.i18n.prefixes
local function mergeList(parentTable, content)
local i = #parentTable + 1
if content[1] then
for _, v in ipairs(content) do
parentTable[i] = v
i = i + 1
end
else
parentTable[i] = content
end
end
local function parseRecipeArgs(args, ingredientArgVals, outputArgs)
local recipeArgs = {}
for _, arg in pairs(ingredientArgVals) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs(outputArgs) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs(recipeArgs) do
if frameText then
local randomise
for _, oArg in pairs(outputArgs) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText(frameText, randomise, true)
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
function m.prefixedLink(name, mod)
local prefix = ''
for _, thisPrefix in pairs(prefixes) do
if name:find('^' .. thisPrefix .. ' ') then
prefix = thisPrefix .. ' '
name = name:sub(#prefix + 1)
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name)
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
function m.makeItemSets(argVals, parsedArgs)
local usedItems = {}
local function addItem(items, arg, frame, alias)
if alias then
frame = alias.frame
end
local uniqName = (frame.mod or '') .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs(argVals) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem(items, arg, subframe, alias)
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem(items, arg, frame, alias)
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
function m.makeItemLinks(itemSets, removePrefixes)
local links = {}
for i, itemSet in ipairs(itemSets) do
local linkSet = {}
for i2, item in ipairs(itemSet) do
local name = item.name
if removePrefixes then
name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper)
end
linkSet[i2] = m.prefixedLink(name, item.mod)
end
links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>')
end
return table.concat(links, i18n.separator .. '<br>')
end
function m.makeHeader(recipeType, class, showName, showDescription, multirow)
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = 'class="unsortable"|'
end
local header = table.concat({
' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) ..
descriptionCell
}, '\n')
return header
end
function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming)
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true)
end
if upcoming then
if upcoming:find('%[%[') then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat(cell, '<br>')
end
function m.makeIngredientsCell(ingredients, itemSets)
return ingredients or m.makeItemLinks(itemSets)
end
function m.table(args, settings)
local multirow = mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-multirow') == '1'
local showHead = args.head
local showFoot = args.foot
if multirow then
showHead = nil
elseif showHead and not showFoot then
multirow = true
mw.getCurrentFrame():callParserFunction('dplvar', 'set', 'recipetable-multirow', '1')
else
showHead = true
showFoot = true
end
local showName = args.showname
local showDescription = args.showdescription
if multirow then
if showHead then
showName = args.showname or '1'
mw.getCurrentFrame():callParserFunction('dplvar', 'set', 'recipetable-name', showName, 'recipetable-description', showDescription)
else
showName = mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-name')
showDescription = mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-description')
end
end
if showName ~= '1' then
showName = nil
end
if showDescription == '' then
showDescription = nil
end
local out = {}
if showHead then
out[1] = m.makeHeader(settings.type, args.class, showName, showDescription, multirow)
end
local ingredientArgVals = settings.ingredientArgs
local outputArgs = settings.outputArgs
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs)
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming)
end
local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs)
cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets)
cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[settings.uiFunc](args)
if showDescription then
cells[#cells + 1] = '|' .. (args.description or '')
end
out[#out + 1] = table.concat(cells, '\n')
out[#out + 1] = showFoot and '|}' or ''
if showFoot then
mw.getCurrentFrame():callParserFunction('dplvar', 'set',
'recipetable-multirow', '',
'recipetable-name', '',
'recipetable-description', ''
)
end
return table.concat(out, '\n|-\n'), ingredientsItemSets
end
return m
03ae8e28584e2abb03bec64296b7a4df6c262330
121
120
2024-05-02T16:35:14Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = "Module:Inventory slot",
moduleUi = "Module:UI",
separator = " +",
setSeparator = " or",
tableDescription = "$1 recipes",
}
local slot = require(i18n.moduleSlot)
local prefixes = slot.i18n.prefixes
local function mergeList(parentTable, content)
local i = #parentTable + 1
if content[1] then
for _, v in ipairs(content) do
parentTable[i] = v
i = i + 1
end
else
parentTable[i] = content
end
end
local function parseRecipeArgs(args, ingredientArgVals, outputArgs)
local recipeArgs = {}
for _, arg in pairs(ingredientArgVals) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs(outputArgs) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs(recipeArgs) do
if frameText then
local randomise
for _, oArg in pairs(outputArgs) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText(frameText, randomise, true)
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
function m.prefixedLink(name, mod)
local prefix = ''
for _, thisPrefix in pairs(prefixes) do
if name:find('^' .. thisPrefix .. ' ') then
prefix = thisPrefix .. ' '
name = name:sub(#prefix + 1)
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name)
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
function m.makeItemSets(argVals, parsedArgs)
local usedItems = {}
local function addItem(items, arg, frame, alias)
if alias then
frame = alias.frame
end
local uniqName = (frame.mod or '') .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs(argVals) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem(items, arg, subframe, alias)
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem(items, arg, frame, alias)
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
function m.makeItemLinks(itemSets, removePrefixes)
local links = {}
for i, itemSet in ipairs(itemSets) do
local linkSet = {}
for i2, item in ipairs(itemSet) do
local name = item.name
if removePrefixes then
name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper)
end
linkSet[i2] = m.prefixedLink(name, item.mod)
end
links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>')
end
return table.concat(links, i18n.separator .. '<br>')
end
function m.makeHeader(recipeType, class, showName, showDescription, multirow)
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = 'class="unsortable"|'
end
local header = table.concat({
' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) ..
descriptionCell
}, '\n')
return header
end
function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming)
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true)
end
if upcoming then
if upcoming:find('%[%[') then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat(cell, '<br>')
end
function m.makeIngredientsCell(ingredients, itemSets)
return ingredients or m.makeItemLinks(itemSets)
end
function m.table(args, settings, multirow, showHead, showFoot, showName, showDescription)
local out = {}
if showHead then
out[1] = m.makeHeader(settings.type, args.class, showName, showDescription, multirow)
end
local ingredientArgVals = settings.ingredientArgs
local outputArgs = settings.outputArgs
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs)
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming)
end
local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs)
cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets)
cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[settings.uiFunc](args)
if showDescription then
cells[#cells + 1] = '|' .. (args.description or '')
end
out[#out + 1] = table.concat(cells, '\n')
out[#out + 1] = showFoot and '|}' or ''
return table.concat(out, '\n|-\n'), ingredientsItemSets
end
return m
f59619c6ab16c1d8b3371e1792bda9ca9fe90b94
122
121
2024-05-02T16:43:29Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = "Module:Inventory slot",
moduleUi = "Module:UI",
separator = " +",
setSeparator = " or",
tableDescription = "$1 recipes",
}
local slot = require(i18n.moduleSlot)
local prefixes = slot.i18n.prefixes
local function mergeList(parentTable, content)
local i = #parentTable + 1
if content[1] then
for _, v in ipairs(content) do
parentTable[i] = v
i = i + 1
end
else
parentTable[i] = content
end
end
local function parseRecipeArgs(args, ingredientArgVals, outputArgs)
local recipeArgs = {}
for _, arg in pairs(ingredientArgVals) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs(outputArgs) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs(recipeArgs) do
if frameText then
local randomise
for _, oArg in pairs(outputArgs) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText(frameText, randomise, true)
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
function m.prefixedLink(name, mod)
local prefix = ''
for _, thisPrefix in pairs(prefixes) do
if name:find('^' .. thisPrefix .. ' ') then
prefix = thisPrefix .. ' '
name = name:sub(#prefix + 1)
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name)
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
function m.makeItemSets(argVals, parsedArgs)
local usedItems = {}
local function addItem(items, arg, frame, alias)
if alias then
frame = alias.frame
end
local uniqName = (frame.mod or '') .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs(argVals) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem(items, arg, subframe, alias)
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem(items, arg, frame, alias)
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
function m.makeItemLinks(itemSets, removePrefixes)
local links = {}
for i, itemSet in ipairs(itemSets) do
local linkSet = {}
for i2, item in ipairs(itemSet) do
local name = item.name
if removePrefixes then
name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper)
end
linkSet[i2] = m.prefixedLink(name, item.mod)
end
links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>')
end
return table.concat(links, i18n.separator .. '<br>')
end
function m.makeHeader(recipeType, class, showName, showDescription, multirow)
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = 'class="unsortable"|'
end
local header = table.concat({
' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) ..
descriptionCell
}, '\n')
return header
end
function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming)
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true)
end
if upcoming then
if upcoming:find('%[%[') then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat(cell, '<br>')
end
function m.makeIngredientsCell(ingredients, itemSets)
return ingredients or m.makeItemLinks(itemSets)
end
function m.table(args, settings)
local multirow = args.multirow or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-multirow') == '1'
local showHead = args.showhead or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-head') == '1'
local showFoot = args.showfoot or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-foot') == '1'
local showName = args.showname or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-name') == '1'
local showDescription = args.showdescription or mw.getCurrentFrame():callParserFunction('dplvar', 'recipetable-description')
local out = {}
if showHead then
out[1] = m.makeHeader(settings.type, args.class, showName, showDescription, multirow)
end
local ingredientArgVals = settings.ingredientArgs
local outputArgs = settings.outputArgs
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs)
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming)
end
local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs)
cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets)
cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[settings.uiFunc](args)
if showDescription then
cells[#cells + 1] = '|' .. (args.description or '')
end
out[#out + 1] = table.concat(cells, '\n')
out[#out + 1] = showFoot and '|}' or ''
return table.concat(out, '\n|-\n'), ingredientsItemSets
end
return m
f052bf39647d2a56dcb94dd12d87d19df9331be7
123
122
2024-05-02T16:47:57Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = "Module:Inventory slot",
moduleUi = "Module:UI",
separator = " +",
setSeparator = " or",
tableDescription = "$1 recipes",
}
local slot = require(i18n.moduleSlot)
local prefixes = slot.i18n.prefixes
local function mergeList(parentTable, content)
local i = #parentTable + 1
if content[1] then
for _, v in ipairs(content) do
parentTable[i] = v
i = i + 1
end
else
parentTable[i] = content
end
end
local function parseRecipeArgs(args, ingredientArgVals, outputArgs)
local recipeArgs = {}
for _, arg in pairs(ingredientArgVals) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs(outputArgs) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs(recipeArgs) do
if frameText then
local randomise
for _, oArg in pairs(outputArgs) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText(frameText, randomise, true)
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
function m.prefixedLink(name, mod)
local prefix = ''
for _, thisPrefix in pairs(prefixes) do
if name:find('^' .. thisPrefix .. ' ') then
prefix = thisPrefix .. ' '
name = name:sub(#prefix + 1)
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name)
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
function m.makeItemSets(argVals, parsedArgs)
local usedItems = {}
local function addItem(items, arg, frame, alias)
if alias then
frame = alias.frame
end
local uniqName = (frame.mod or '') .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs(argVals) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem(items, arg, subframe, alias)
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem(items, arg, frame, alias)
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
function m.makeItemLinks(itemSets, removePrefixes)
local links = {}
for i, itemSet in ipairs(itemSets) do
local linkSet = {}
for i2, item in ipairs(itemSet) do
local name = item.name
if removePrefixes then
name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper)
end
linkSet[i2] = m.prefixedLink(name, item.mod)
end
links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>')
end
return table.concat(links, i18n.separator .. '<br>')
end
function m.makeHeader(recipeType, class, showName, showDescription, multirow)
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = 'class="unsortable"|'
end
local header = table.concat({
' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) ..
descriptionCell
}, '\n')
return header
end
function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming)
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true)
end
if upcoming then
if upcoming:find('%[%[') then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat(cell, '<br>')
end
function m.makeIngredientsCell(ingredients, itemSets)
return ingredients or m.makeItemLinks(itemSets)
end
function m.table(args, showHead, showFoot, showName, showDescription, multirow)
local out = {}
if showHead then
out[1] = m.makeHeader(args.type, args.class, showName, showDescription, multirow)
end
local ingredientArgVals = args.ingredientArgs
local outputArgs = args.outputArgs
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs)
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming)
end
local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs)
cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets)
cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[args.uiFunc](args)
if showDescription then
cells[#cells + 1] = '|' .. (args.description or '')
end
out[#out + 1] = table.concat(cells, '\n')
out[#out + 1] = showFoot and '|}' or ''
return table.concat(out, '\n|-\n'), ingredientsItemSets
end
return m
5b4136f849cce4910c93923c096687b424b9e14a
126
123
2024-05-02T16:50:06Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = "Module:Inventory slot",
moduleUi = "Module:UI",
separator = " +",
setSeparator = " or",
tableDescription = "$1 recipes",
}
local slot = require(i18n.moduleSlot)
local prefixes = slot.i18n.prefixes
local function mergeList(parentTable, content)
local i = #parentTable + 1
if content[1] then
for _, v in ipairs(content) do
parentTable[i] = v
i = i + 1
end
else
parentTable[i] = content
end
end
local function parseRecipeArgs(args, ingredientArgVals, outputArgs)
local recipeArgs = {}
for _, arg in pairs(ingredientArgVals) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs(outputArgs) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs(recipeArgs) do
if frameText then
local randomise
for _, oArg in pairs(outputArgs) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText(frameText, randomise, true)
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
function m.prefixedLink(name, mod)
local prefix = ''
for _, thisPrefix in pairs(prefixes) do
if name:find('^' .. thisPrefix .. ' ') then
prefix = thisPrefix .. ' '
name = name:sub(#prefix + 1)
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name)
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
function m.makeItemSets(argVals, parsedArgs)
local usedItems = {}
local function addItem(items, arg, frame, alias)
if alias then
frame = alias.frame
end
local uniqName = (frame.mod or '') .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs(argVals) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem(items, arg, subframe, alias)
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem(items, arg, frame, alias)
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
function m.makeItemLinks(itemSets, removePrefixes)
local links = {}
for i, itemSet in ipairs(itemSets) do
local linkSet = {}
for i2, item in ipairs(itemSet) do
local name = item.name
if removePrefixes then
name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper)
end
linkSet[i2] = m.prefixedLink(name, item.mod)
end
links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>')
end
return table.concat(links, i18n.separator .. '<br>')
end
function m.makeHeader(recipeType, class, showName, showDescription, multirow)
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = 'class="unsortable"|'
end
local header = table.concat({
' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) ..
descriptionCell
}, '\n')
return header
end
function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming)
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true)
end
if upcoming then
if upcoming:find('%[%[') then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat(cell, '<br>')
end
function m.makeIngredientsCell(ingredients, itemSets)
return ingredients or m.makeItemLinks(itemSets)
end
function m.table(args)
local out = {}
if args.showHead then
out[1] = m.makeHeader(args.type, args.class, args.showName, args.showDescription, args.multirow)
end
local ingredientArgVals = args.ingredientArgs
local outputArgs = args.outputArgs
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs)
end
local cells = {}
if args.showName then
cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming)
end
local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs)
cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets)
cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[args.uiFunc](args)
if args.showDescription then
cells[#cells + 1] = '|' .. (args.description or '')
end
out[#out + 1] = table.concat(cells, '\n')
out[#out + 1] = args.showFoot and '|}' or ''
return table.concat(out, '\n|-\n'), ingredientsItemSets
end
return m
e2015652f002d5c8ba6e0c530d0237834042688d
127
126
2024-05-02T16:55:25Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = "Module:Inventory slot",
moduleUi = "Module:UI",
separator = " +",
setSeparator = " or",
tableDescription = "$1 recipes",
}
local slot = require(i18n.moduleSlot)
local prefixes = slot.i18n.prefixes
local function mergeList(parentTable, content)
local i = #parentTable + 1
if content[1] then
for _, v in ipairs(content) do
parentTable[i] = v
i = i + 1
end
else
parentTable[i] = content
end
end
local function parseRecipeArgs(args, ingredientArgVals, outputArgs)
local recipeArgs = {}
for _, arg in pairs(ingredientArgVals) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs(outputArgs) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs(recipeArgs) do
if frameText then
local randomise
for _, oArg in pairs(outputArgs) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText(frameText, randomise, true)
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
function m.prefixedLink(name, mod)
local prefix = ''
for _, thisPrefix in pairs(prefixes) do
if name:find('^' .. thisPrefix .. ' ') then
prefix = thisPrefix .. ' '
name = name:sub(#prefix + 1)
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name)
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
function m.makeItemSets(argVals, parsedArgs)
local usedItems = {}
local function addItem(items, arg, frame, alias)
if alias then
frame = alias.frame
end
local uniqName = (frame.mod or '') .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs(argVals) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem(items, arg, subframe, alias)
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem(items, arg, frame, alias)
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
function m.makeItemLinks(itemSets, removePrefixes)
local links = {}
for i, itemSet in ipairs(itemSets) do
local linkSet = {}
for i2, item in ipairs(itemSet) do
local name = item.name
if removePrefixes then
name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper)
end
linkSet[i2] = m.prefixedLink(name, item.mod)
end
links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>')
end
return table.concat(links, i18n.separator .. '<br>')
end
function m.makeHeader(recipeType, class, showName, showDescription, multirow)
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = 'class="unsortable"|'
end
local header = table.concat({
' {| class="wikitable ' .. class .. '" data-description="' .. i18n.tableDescription:gsub('%$1', recipeType) .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. i18n.headingRecipe:gsub('%$1', recipeType) ..
descriptionCell
}, '\n')
return header
end
function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming)
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true)
end
if upcoming then
if upcoming:find('%[%[') then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat(cell, '<br>')
end
function m.makeIngredientsCell(ingredients, itemSets)
return ingredients or m.makeItemLinks(itemSets)
end
function m.table(args)
args = args or {} -- Provide default empty table if args is nil
local out = {}
-- Default values for arguments
local showHead = args.showHead ~= nil and args.showHead or true
local showFoot = args.showFoot ~= nil and args.showFoot or true
local showName = args.showName ~= nil and args.showName or true
local showDescription = args.showDescription ~= nil and args.showDescription or true
local multirow = args.multirow ~= nil and args.multirow or true
if showHead then
out[1] = m.makeHeader(args.type, args.class, showName, showDescription, multirow)
end
local ingredientArgVals = args.ingredientArgs or {}
local outputArgs = args.outputArgs or {}
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs)
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming)
end
local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs)
cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets)
cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[args.uiFunc](args)
if showDescription then
cells[#cells + 1] = '|' .. (args.description or '')
end
out[#out + 1] = table.concat(cells, '\n')
out[#out + 1] = showFoot and '|}' or ''
return table.concat(out, '\n|-\n'), ingredientsItemSets
end
return m
8ede82c18762c86425f5e0cee77d1dec7b3c7f0c
128
127
2024-05-02T16:58:16Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = "Module:Inventory slot",
moduleUi = "Module:UI",
separator = " +",
setSeparator = " or",
tableDescription = "$1 recipes",
}
local slot = require(i18n.moduleSlot)
local prefixes = slot.i18n.prefixes
local function mergeList(parentTable, content)
local i = #parentTable + 1
if content[1] then
for _, v in ipairs(content) do
parentTable[i] = v
i = i + 1
end
else
parentTable[i] = content
end
end
local function parseRecipeArgs(args, ingredientArgVals, outputArgs)
local recipeArgs = {}
for _, arg in pairs(ingredientArgVals) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs(outputArgs) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs(recipeArgs) do
if frameText then
local randomise
for _, oArg in pairs(outputArgs) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText(frameText, randomise, true)
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
function m.prefixedLink(name, mod)
local prefix = ''
for _, thisPrefix in pairs(prefixes) do
if name:find('^' .. thisPrefix .. ' ') then
prefix = thisPrefix .. ' '
name = name:sub(#prefix + 1)
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name)
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
function m.makeItemSets(argVals, parsedArgs)
local usedItems = {}
local function addItem(items, arg, frame, alias)
if alias then
frame = alias.frame
end
local uniqName = (frame.mod or '') .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs(argVals) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem(items, arg, subframe, alias)
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem(items, arg, frame, alias)
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
function m.makeItemLinks(itemSets, removePrefixes)
local links = {}
for i, itemSet in ipairs(itemSets) do
local linkSet = {}
for i2, item in ipairs(itemSet) do
local name = item.name
if removePrefixes then
name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper)
end
linkSet[i2] = m.prefixedLink(name, item.mod)
end
links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>')
end
return table.concat(links, i18n.separator .. '<br>')
end
function m.makeHeader(recipeType, class, showName, showDescription, multirow)
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = '|class="unsortable"'
end
local header = table.concat({
'{| class="wikitable ' .. class .. '" data-description="' .. (i18n.tableDescription or ""):gsub('%$1', recipeType or "") .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. '|' .. i18n.headingRecipe:gsub('%$1', recipeType or "") ..
descriptionCell
}, '\n')
return header
end
function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming)
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true)
end
if upcoming then
if upcoming:find('%[%[') then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat(cell, '<br>')
end
function m.makeIngredientsCell(ingredients, itemSets)
return ingredients or m.makeItemLinks(itemSets)
end
function m.table(args)
args = args or {} -- Provide default empty table if args is nil
local out = {}
-- Default values for arguments
local showHead = args.showHead ~= nil and args.showHead or true
local showFoot = args.showFoot ~= nil and args.showFoot or true
local showName = args.showName ~= nil and args.showName or true
local showDescription = args.showDescription ~= nil and args.showDescription or true
local multirow = args.multirow ~= nil and args.multirow or true
if showHead then
out[1] = m.makeHeader(args.type, args.class, showName, showDescription, multirow)
end
local ingredientArgVals = args.ingredientArgs or {}
local outputArgs = args.outputArgs or {}
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs)
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming)
end
local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs)
cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets)
cells[#cells + 1] = '|style="padding:1px"|' .. require(i18n.moduleUi)[args.uiFunc](args)
if showDescription then
cells[#cells + 1] = '|' .. (args.description or '')
end
out[#out + 1] = table.concat(cells, '\n')
out[#out + 1] = showFoot and '|}' or ''
return table.concat(out, '\n|-\n'), ingredientsItemSets
end
return m
cde814d36a35e89050c1272f8965d0eb36782654
129
128
2024-05-02T17:01:59Z
Axxyyy
2
Scribunto
text/plain
local m = {}
local i18n = {
headingDescription = 'Description',
headingIngredients = 'Ingredients',
headingName = 'Name',
headingRecipe = '$1 recipe',
moduleSlot = "Module:Inventory slot",
moduleUi = "Module:UI",
separator = " +",
setSeparator = " or",
tableDescription = "$1 recipes",
}
local slot = require(i18n.moduleSlot)
local prefixes = slot.i18n.prefixes
local function mergeList(parentTable, content)
local i = #parentTable + 1
if content[1] then
for _, v in ipairs(content) do
parentTable[i] = v
i = i + 1
end
else
parentTable[i] = content
end
end
local function parseRecipeArgs(args, ingredientArgVals, outputArgs)
local recipeArgs = {}
for _, arg in pairs(ingredientArgVals) do
recipeArgs[arg] = args[arg]
end
for _, arg in pairs(outputArgs) do
recipeArgs[arg] = args[arg]
end
local parsedFrameText = {}
local parsedRecipeArgs = {}
for arg, frameText in pairs(recipeArgs) do
if frameText then
local randomise
for _, oArg in pairs(outputArgs) do
if arg == oArg then
randomise = 'never'
break
end
end
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText(frameText, randomise, true)
parsedFrameText[frameText] = frames
end
parsedRecipeArgs[arg] = frames
end
end
return parsedRecipeArgs
end
function m.prefixedLink(name, mod)
local prefix = ''
for _, thisPrefix in pairs(prefixes) do
if name:find('^' .. thisPrefix .. ' ') then
prefix = thisPrefix .. ' '
name = name:sub(#prefix + 1)
break
end
end
local page = name
if mod then
page = slot.i18n.modLink:gsub('%$1', mod):gsub('%$2', name)
end
return table.concat{ prefix, '[[', page, '|', name, ']]' }
end
function m.makeItemSets(argVals, parsedArgs)
local usedItems = {}
local function addItem(items, arg, frame, alias)
if alias then
frame = alias.frame
end
local uniqName = (frame.mod or '') .. ':' .. frame.name
if not usedItems[uniqName] then
usedItems[uniqName] = true
items[#items + 1] = frame
end
return alias and alias.length or 1
end
local itemSets = {}
local i = 1
for _, arg in ipairs(argVals) do
local frames = parsedArgs[arg]
if frames then
local items = {}
local frameNum = 1
while frameNum <= #frames do
local frame = frames[frameNum]
if frame[1] then
local subframeNum = 1
while subframeNum <= #frame do
local subframe = frame[subframeNum]
if subframe.name ~= '' then
local alias = frame.aliasReference and frame.aliasReference[subframeNum]
subframeNum = subframeNum + addItem(items, arg, subframe, alias)
else
subframeNum = subframeNum + 1
end
end
frameNum = frameNum + 1
elseif frame.name ~= '' then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
frameNum = frameNum + addItem(items, arg, frame, alias)
else
frameNum = frameNum + 1
end
end
if #items > 0 then
itemSets[i] = items
i = i + 1
end
end
end
return itemSets
end
function m.makeItemLinks(itemSets, removePrefixes)
local links = {}
for i, itemSet in ipairs(itemSets) do
local linkSet = {}
for i2, item in ipairs(itemSet) do
local name = item.name
if removePrefixes then
name = name:gsub('^' .. prefixes.any .. ' ', ''):gsub('^' .. prefixes.matching .. ' ', ''):gsub('^%l', string.upper)
end
linkSet[i2] = m.prefixedLink(name, item.mod)
end
links[i] = table.concat(linkSet, i18n.setSeparator .. '<br>')
end
return table.concat(links, i18n.separator .. '<br>')
end
function m.makeHeader(recipeType, class, showName, showDescription, multirow)
class = class or ''
local nameCell = ''
if showName then
nameCell = i18n.headingName .. '!!'
end
local descriptionCell = ''
if showDescription then
descriptionCell = '!!class="unsortable"|' .. i18n.headingDescription
end
local recipeAttribs = ''
if multirow then
class = 'sortable collapsible ' .. class
recipeAttribs = '|class="unsortable"'
end
local header = table.concat({
'{| class="wikitable ' .. class .. '" data-description="' .. (i18n.tableDescription or ""):gsub('%$1', recipeType or "") .. '"',
'!' .. nameCell ..
i18n.headingIngredients .. '!!' ..
recipeAttribs .. '|' .. i18n.headingRecipe:gsub('%$1', recipeType or "") ..
descriptionCell
}, '\n')
return header
end
function m.makeNameCell(name, outputArgs, parsedRecipeArgs, upcoming)
local cell = {}
if name then
cell[1] = name
else
cell[1] = m.makeItemLinks(m.makeItemSets(outputArgs, parsedRecipeArgs), true)
end
if upcoming then
if upcoming:find('%[%[') then
cell[2] = '(' .. upcoming .. ')'
else
cell[2] = '([[' .. upcoming .. ']])'
end
end
return table.concat(cell, '<br>')
end
function m.makeIngredientsCell(ingredients, itemSets)
return ingredients or m.makeItemLinks(itemSets)
end
function m.table(args)
args = args or {}
local out = {}
-- Default values for arguments
local showHead = args.showHead ~= nil and args.showHead or true
local showFoot = args.showFoot ~= nil and args.showFoot or true
local showName = args.showName ~= nil and args.showName or true
local showDescription = args.showDescription ~= nil and args.showDescription or true
local multirow = args.multirow ~= nil and args.multirow or true
if showHead then
out[1] = m.makeHeader(args.type, args.class, showName, showDescription, multirow)
end
local ingredientArgVals = args.ingredientArgs or {}
local outputArgs = args.outputArgs or {}
local parsedRecipeArgs = args
if not args.parsed then
parsedRecipeArgs = parseRecipeArgs(args, ingredientArgVals, outputArgs)
end
local cells = {}
if showName then
cells[1] = '!' .. m.makeNameCell(args.name, outputArgs, parsedRecipeArgs, args.upcoming)
end
local ingredientsItemSets = m.makeItemSets(ingredientArgVals, parsedRecipeArgs)
cells[#cells + 1] = '|' .. m.makeIngredientsCell(args.ingredients, ingredientsItemSets)
-- Call the UI function if provided and valid
if args.uiFunc then
local uiModule = require(i18n.moduleUi)
local uiFunc = uiModule[args.uiFunc]
if uiFunc and type(uiFunc) == "function" then
cells[#cells + 1] = '|style="padding:1px"|' .. uiFunc(args)
else
error("UI function '" .. args.uiFunc .. "' not found or not a function in module '" .. i18n.moduleUi .. "'")
end
end
if showDescription then
cells[#cells + 1] = '|' .. (args.description or '')
end
out[#out + 1] = table.concat(cells, '\n')
out[#out + 1] = args.showFoot and '|}' or ''
return table.concat(out, '\n|-\n'), ingredientsItemSets
end
return m
8700530ed7a3314feefef6f00f219b1e9ea8ebe0
130
129
2024-05-02T17:03:18Z
Axxyyy
2
Scribunto
text/plain
local p = {}
local i18n = {
colored = 'Colored',
coloredDyes = {
'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Dandelion Yellow', 'Lime Dye',
'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye',
'Lapis Lazuli', 'Cocoa Beans', 'Cactus Green', 'Rose Red', 'Ink Sac',
},
categoryIngredientUsage = 'Category:Recipe using $1',
categoryRecipeType = 'Category:$1 recipe',
categoryUpcoming = 'Category:Upcoming',
itemBlockOfQuartz = 'Block of Quartz',
itemBoneMeal = 'Bone Meal',
itemBrownMushroom = 'Brown Mushroom',
itemCharcoal = 'Charcoal',
itemCoal = 'Coal',
itemColoredDye = 'Colored Dye',
itemDye = 'Dye',
itemMushroom = 'Mushroom',
itemQuartzBlock = 'Quartz Block',
itemRedMushroom = 'Red Mushroom',
itemStone = 'Stone',
moduleArgs = [[Module:ProcessArgs]],
moduleRecipe = [[Module:Recipe table]],
moduleSlot = [[Module:Inventory slot]],
stoneVariants = { 'Stone', 'Andesite', 'Granite', 'Diorite' },
type = 'Crafting',
variantPages = {
'Andesite', 'Banner', 'Bed', 'Diorite', 'Firework Star', 'Granite',
'Pressure Plate', 'Sand', 'Sandstone', 'Shield', 'Slab', 'Stained Glass Pane',
'Stained Glass', 'Stairs', 'Stone Bricks', 'Wood Planks', 'Wood', 'Wool',
},
}
p.i18n = i18n
local slot = require( i18n.moduleSlot )
local recipeTable = require( i18n.moduleRecipe ).table
local cArgVals = { 'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3' }
p.cArgVals = cArgVals
function p.table( f )
local args = f
if f == mw.getCurrentFrame() then
args = require( i18n.moduleArgs ).merge( true )
else
f = mw.getCurrentFrame()
end
-- Automatic shapeless positioning
if args[1] then
args.shapeless = 1
if args[7] then
args.A1 = args[1]
args.B1 = args[2]
args.C1 = args[3]
args.A2 = args[4]
args.B2 = args[5]
args.C2 = args[6]
if args[8] then
-- ◼◼◼ ◼◼◼
-- ◼◼◼ OR ◼◼◼
-- ◼◼◼ ◼◼◻
args.A3 = args[7]
args.B3 = args[8]
args.C3 = args[9]
if args[9] then
local identical = true
for i = 1, 8 do
if args[i] ~= args[i + 1] then
identical = false
break
end
end
if identical then
args.shapeless = nil
end
end
else
-- ◼◼◼
-- ◼◼◼
-- ◻◼◻
args.B3 = args[7]
end
elseif args[2] then
args.A2 = args[1]
args.B2 = args[2]
if args[5] then
-- ◻◻◻ ◻◻◻
-- ◼◼◼ OR ◼◼◼
-- ◼◼◼ ◼◼◻
args.C2 = args[3]
args.A3 = args[4]
args.B3 = args[5]
args.C3 = args[6]
elseif args[4] then
-- ◻◻◻
-- ◼◼◻
-- ◼◼◻
args.A3 = args[3]
args.B3 = args[4]
else
-- ◻◻◻ ◻◻◻
-- ◼◼◻ OR ◼◼◻
-- ◻◼◻ ◻◻◻
args.B3 = args[3]
end
else
-- ◻◻◻
-- ◻◼◻
-- ◻◻◻
args.B2 = args[1]
args.shapeless = nil
end
for i = 1, 9 do
args[i] = nil
end
end
-- Create recipe table, and list of ingredients
local out, ingredientSets = recipeTable( args, {
uiFunc = 'craftingTable',
type = i18n.type,
ingredientArgs = cArgVals,
outputArgs = { 'Output' },
} )
local title = mw.title.getCurrentTitle()
if args.nocat == '1' or title.namespace ~= 0 or title.isSubpage then
return out
end
local categories = {}
local cI = 1
if args.upcoming then
categories[cI] = '[[' .. i18n.categoryUpcoming .. ']]'
cI = cI + 1
end
if args.type then
categories[cI] = '[[' .. i18n.categoryRecipeType:gsub( '%$1', args.type ) .. ']]'
cI = cI + 1
end
if args.ignoreusage ~= '1' then
-- Create ingredient categories for DPL
local usedNames = {}
for _, ingredientSet in pairs( ingredientSets ) do
for _, ingredient in pairs( ingredientSet ) do
local name = ingredient.name
if not ingredient.mod and not usedNames[name] and name ~= title.text then
-- List each dye individually as they have their own pages
if
name == slot.i18n.prefixes.any .. ' ' .. i18n.itemDye or
name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemDye or
name == slot.i18n.prefixes.any .. ' ' .. i18n.itemColoredDye or
name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemColoredDye
then
if not name:find( i18n.colored ) then
categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', i18n.itemBoneMeal ) .. ']]'
cI = cI + 1
usedNames[i18n.itemBoneMeal] = true
end
for _, dye in pairs( i18n.coloredDyes ) do
categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', dye ) .. ']]'
cI = cI + 1
usedNames[dye] = true
end
-- List stone variants individually as they have their own pages
elseif
name == slot.i18n.prefixes.any .. ' ' .. i18n.itemStone or
name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemStone
then
for _, stone in pairs( i18n.stoneVariants ) do
categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', stone ) .. ']]'
cI = cI + 1
usedNames[stone] = true
end
else
-- Merge item variants which use a single page
if
name == slot.i18n.prefixes.any .. ' ' .. i18n.itemMushroom or
name == slot.i18n.prefixes.matching .. ' ' .. i18n.itemMushroom or
name == i18n.itemRedMushroom or
name == i18n.itemBrownMushroom
then name = i18n.itemMushroom
elseif name == i18n.itemCharcoal then name = i18n.itemCoal
elseif name:find( ' ' .. i18n.itemQuartzBlock .. '$' ) then name = i18n.itemBlockOfQuartz
else
for _, variant in pairs( i18n.variantPages ) do
if name:find( ' ' .. variant .. '$' ) then
name = variant
break
end
end
-- Remove prefixes
for _, prefix in pairs( slot.i18n.prefixes ) do
if name:find( '^' .. prefix .. ' ' ) then
name = name:gsub( '^' .. prefix .. ' ', '' )
break
end
end
end
if not usedNames[name] then
categories[cI] = '[[' .. i18n.categoryIngredientUsage:gsub( '%$1', name ) .. ']]'
cI = cI + 1
usedNames[name] = true
end
end
end
end
end
end
return out, table.concat( categories, '' )
end
return p
ac086ea676edeb0c5df6f89488b0b33c9cf3cded
Module:Grid
828
74
131
2024-05-02T17:17:31Z
Axxyyy
2
Created page with "local p = {} -- Individual cell function p.cell( f ) local args = f.args or f if f == mw.getCurrentFrame() and args[1] == nil then args = f:getParent().args end args[1] = mw.text.trim( args[1] or '' ) if not args.noalias then -- Comment this next line out if you're not using aliases local aliases = mw.loadData( 'Module:Grid/Aliases' ) local modAliases = args.modaliases or '' if modAliases ~= '' then modAliases = mw.loadData( 'Module:' .. modAlias..."
Scribunto
text/plain
local p = {}
-- Individual cell
function p.cell( f )
local args = f.args or f
if f == mw.getCurrentFrame() and args[1] == nil then
args = f:getParent().args
end
args[1] = mw.text.trim( args[1] or '' )
if not args.noalias then
-- Comment this next line out if you're not using aliases
local aliases = mw.loadData( 'Module:Grid/Aliases' )
local modAliases = args.modaliases or ''
if modAliases ~= '' then
modAliases = mw.loadData( 'Module:' .. modAliases )
else
modAliases = nil
end
if aliases or modAliases then
local frames = {}
for frame in mw.text.gsplit( args[1], '%s*;%s*' ) do
local frameParts = p.getParts( frame, args.mod )
local id = frameParts.name
if frameParts.mod then
id = frameParts.mod .. ':' .. id
end
local alias
if modAliases and modAliases[id] then
alias = modAliases[id]
elseif aliases and aliases[id] then
alias = aliases[id]
end
if alias then
table.insert( frames, p.expandAlias( frameParts, alias ) )
else
table.insert( frames, frame )
end
end
args[1] = table.concat( frames, ';' )
end
end
local animated = args[1]:find( ';' )
local pageName = mw.title.getCurrentTitle().subpageText
local class = args.class or ''
local imgClass = args.imgclass or ''
local style = args.style or ''
local align = args.align or ''
local numStyle = args.numstyle or ''
local cell = {}
for frame in mw.text.gsplit( args[1], '%s*;%s*' ) do
if frame == '' then
if animated then
table.insert( cell, '<span class="item"><br></span>' )
else
table.insert( cell, '<br>' )
end
else
local parts = p.getParts( frame, args.mod )
local tooltipTitle = parts.title
local mod = parts.mod
local name = parts.name
local num = parts.num
local tooltipDesc = parts.text
local img
if mod then
img = name .. ' (' .. mod .. ')'
else
img = name
end
local link = args.link or ''
if link == '' then
if name == pageName then
link = 'none'
elseif mod then
link = 'Mods/' .. mod .. '/' .. name
else
link = name
end
end
local title = args.title or ''
if title == '' then
if tooltipTitle then
title = tooltipTitle:gsub( '&[0-9a-fk-or]', '' )
end
if mw.text.trim( title ) == '' or link:lower() == 'none' or link ~= name:gsub( '%s%(.*', '' ) then
title = name
end
end
if not tooltipTitle and title:lower() == 'none' then
tooltipTitle = 0
end
local alt = img
if title:lower() ~= 'none' then
alt = title
end
if link:lower() == 'none' then
link = ''
end
if title:lower() == 'none' then
title = ''
end
local tooltip = ''
if tooltipTitle then
tooltip = ' data-minetip-title="' .. tooltipTitle .. '"'
end
if tooltipDesc then
tooltip = tooltip .. ' data-minetip-text="' .. tooltipDesc .. '"'
end
local image = {
'<span class="item ' .. imgClass .. '" title="' .. title .. '"' .. tooltip .. '>',
'[[File:Grid ' .. img .. '.png|32x32px|link=' .. link .. '|alt=' .. alt .. ']]',
'</span>',
}
image[1] = image[1]:gsub( ' title=""', '' )
image[2] = image[2]:gsub( '||', '|' )
if num and num > 1 and num < 1000 then
if link ~= '' then
num = '[[' .. link .. '|' .. num .. ']]'
end
if numStyle ~= '' then
numStyle = ' style="' .. numStyle .. '"'
end
table.insert( image, 3, '<span class="number"' .. numStyle .. '>' .. num .. '</span>' )
end
table.insert( cell, table.concat( image, '' ) )
end
end
if animated then
cell[1] = cell[1]:gsub( 'class="item', 'class="item active' )
class = 'animated ' .. class
end
local styles = {}
if align ~= '' then
table.insert( styles, 'vertical-align:' .. align )
end
if style ~= '' then
table.insert( styles, style )
end
if #styles > 0 then
styles = ' style="' .. table.concat( styles, ';' ) .. '"'
else
styles = ''
end
local html = {
'<span class="grid ' .. class .. '"' .. styles .. '>',
table.concat( cell, '' ),
'</span>'
}
if ( args.default or '' ) ~= '' then
local defaultClass = ''
if animated then
defaultClass = ' skip'
end
table.insert( html, 2, '<span class="default-item' .. defaultClass .. '">[[File:Grid ' .. args.default .. '.png|32x32px|alt=|link=]]</span>' )
end
html = table.concat( html, '' ):gsub( ' "', '"' )
return html
end
function p.expandAlias( frameParts, alias )
-- If the frame has no parts, we can just return the alias as-is
if not frameParts.title and not frameParts.mod and not frameParts.num and not frameParts.text then
return alias
end
local expandedFrames = {}
for aliasFrame in mw.text.gsplit( alias, '%s*;%s*' ) do
local aliasParts = p.getParts( aliasFrame )
aliasParts.title = frameParts.title or aliasParts.title or ''
aliasParts.mod = frameParts.mod or aliasParts.mod or 'Minecraft'
aliasParts.num = frameParts.num or aliasParts.num or ''
aliasParts.text = frameParts.text or aliasParts.text or ''
table.insert( expandedFrames, string.format( '[%s]%s:%s,%s[%s]', aliasParts.title, aliasParts.mod, aliasParts.name, aliasParts.num, aliasParts.text ) )
end
return table.concat( expandedFrames, ';' )
end
function p.getParts( frame, mod )
local parts = {}
parts.title = frame:match( '^%[%s*([^%]]+)%s*%]' )
parts.mod = mw.text.trim( frame:match( '([^:%]]+):' ) or mod or '' )
local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 }
if parts.mod == '' or vanilla[mw.ustring.lower( parts.mod )] then
parts.mod = nil
end
local nameStart = ( frame:find( ':' ) or frame:find( '%]' ) or 0 ) + 1
if nameStart - 1 == #frame then
nameStart = 1
end
parts.name = mw.text.trim( frame:sub( nameStart, ( frame:find( '[,%[]', nameStart ) or 0 ) - 1 ) )
parts.num = math.floor( frame:match( ',%s*(%d+)' ) or 0 )
if parts.num == 0 then
parts.num = nil
end
parts.text = frame:match( '%[%s*([^%]]+)%s*%]$' )
return parts
end
--- GUI variants; called directly to avoid the overhead of a bunch of #invoke calls per GUI
-- Crafting table
function p.craftingTable( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
end
local arrow = 'Arrow (small)'
local shapeless = ''
if args.arrow or '' ~= '' then
arrow = args.arrow .. ' (' .. args.Mod .. ')'
end
if args.shapeless or '' ~= '' then
shapeless = '<span title="This recipe is shapeless; the inputs may be placed in any arrangement in the crafting grid.">[[File:Grid layout Shapeless.png|link=]]</span>'
elseif args.fixed or '' ~= '' then
local notFixed = ''
if args.notfixed or '' ~= '' then
notFixed = '; except for ' .. args.notfixed .. ', which can go anywhere'
end
shapeless = '<span title="This recipe is fixed, the input arrangement may not be moved or mirrored' .. notFixed .. '.">[[File:Grid layout Fixed.png|link=]]</span>'
end
local html = {
'{| class="grid-Crafting_Table" cellpadding="0" cellspacing="0"',
'| ' .. p.cell{ args.A1, mod = args.Mod, link = args.A1link, title = args.A1title },
'| ' .. p.cell{ args.B1, mod = args.Mod, link = args.B1link, title = args.B1title },
'| ' .. p.cell{ args.C1, mod = args.Mod, link = args.C1link, title = args.C1title },
'| rowspan="2" class="arrow" | [[File:Grid layout ' .. arrow .. '.png|link=]]',
'| rowspan="3" | ' .. p.cell{ args.Output, mod = args.Mod, link = args.Olink, title = args.Otitle, class = 'output' },
'|-',
'| ' .. p.cell{ args.A2, mod = args.Mod, link = args.A2link, title = args.A2title },
'| ' .. p.cell{ args.B2, mod = args.Mod, link = args.B2link, title = args.B2title },
'| ' .. p.cell{ args.C2, mod = args.Mod, link = args.C2link, title = args.C2title },
'|-',
'| ' .. p.cell{ args.A3, mod = args.Mod, link = args.A3link, title = args.A3title },
'| ' .. p.cell{ args.B3, mod = args.Mod, link = args.B3link, title = args.B3title },
'| ' .. p.cell{ args.C3, mod = args.Mod, link = args.C3link, title = args.C3title },
'| class="shapeless" | ' .. shapeless,
'|}'
}
return table.concat( html, '\n' );
end
-- Furnace
function p.furnace( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
end
args = require( 'Module:ProcessArgs' ).norm( args )
local progress = 'Furnace Progress'
local burning = ' (in-active)'
local smelting = burning
local fuelUsage = 'Fire'
if args.Progress then
progress = args.Progress .. ' Progress'
if args.Mod then
progress = progress .. ' (' .. args.Mod .. ')'
end
end
if args.Input and args.Fuel then
burning = ''
if args.Output then
smelting = ''
end
end
if args.FuelUsage then
fuelUsage = args.FuelUsage
if args.Mod then
fuelUsage = fuelUsage .. ' (' .. args.Mod .. ')'
end
end
local html = {
'{| class="grid-Furnace" cellpadding="0" cellspacing="0"',
'| ' .. p.cell{ args.Input, mod = args.Mod, link = args.Ilink, title = args.Ititle },
'| rowspan="3" class="arrow" | [[File:Grid layout ' .. progress .. smelting .. '.png|link=]]',
'| rowspan="3" class="output" | ' .. p.cell{ args.Output, mod = args.Mod, link = args.Olink, title = args.Otitle, class = 'output' },
'|-',
'| [[File:Grid layout ' .. fuelUsage .. burning .. '.png|link=]]',
'|-',
'| ' .. p.cell{ args.Fuel, mod = args.Mod, link = args.Flink, title = args.Ftitle },
'|}'
}
return table.concat( html, '\n' );
end
-- Brewing Stand
function p.brewingStand( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
end
args = require( 'Module:ProcessArgs' ).norm( args )
local inactive = ' (In-active)'
if args.Input and ( args.Output1 or args.Output2 or args.Output3 ) then
inactive = ''
end
local html = {
'<div class="grid-Brewing_Stand">',
'{| cellpadding="0" cellspacing="0"',
'| class="bubbles" | [[File:Grid layout Brewing Bubbles.gif|link=]]',
'| class="input" | ' .. p.cell{ args.Input, mod = args.Mod, link = args.Ilink, title = args.Ititle },
'| [[File:Grid layout Brewing Arrow' .. inactive .. '.png|link=]]',
'|-',
'| class="output1" | ' .. p.cell{ args.Output1, mod = args.Mod, link = args.O1link, title = args.O1title, default = 'layout Brewing Empty' },
'| class="output2" | ' .. p.cell{ args.Output2, mod = args.Mod, link = args.O2link, title = args.O2title, default = 'layout Brewing Empty' },
'| class="output3" | ' .. p.cell{ args.Output3, mod = args.Mod, link = args.O3link, title = args.O3title, default = 'layout Brewing Empty' },
'|-',
'| class="paths" colspan="3" | [[File:Grid layout Brewing Paths.png|link=]]',
'|}',
'</div>'
}
return table.concat( html, '\n' );
end
return p
6b49a6669a519fd2f93ce04ed2b5fc4e2b2df6d4
Template:Grid/Crafting Table/doc
10
75
132
2024-05-02T17:26:33Z
Axxyyy
2
Created page with "{{doc/start}} {{lua|Grid}} This template is used to create a grid that looks similar to the [[Crafting Table|Crafting Table's]] GUI screen. See [[Template:Grid]] for basic grid usage, this documentation page will cover additional or different functions. Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead. __TOC__ == Usage == <pre style="max-width: 250px">{{Grid/Crafting Table |A1= |B1=..."
wikitext
text/x-wiki
{{doc/start}}
{{lua|Grid}}
This template is used to create a grid that looks similar to the [[Crafting Table|Crafting Table's]] GUI screen.
See [[Template:Grid]] for basic grid usage, this documentation page will cover additional or different functions.
Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead.
__TOC__
== Usage ==
<pre style="max-width: 250px">{{Grid/Crafting Table
|A1= |B1= |C1=
|A2= |B2= Oak Wood Planks |C2=
|A3= |B3= Oak Wood Planks |C3=
|Output= Stick,4
}}</pre>
;produces:
{{Grid/Crafting Table
|A1= |B1= |C1=
|A2= |B2= Oak Wood Planks |C2=
|A3= |B3= Oak Wood Planks |C3=
|Output= Stick,4
}}
Use the [[#Available images|available images]] listed below.
=== Shapeless ===
If a recipe is shapeless, add shapeless=1 to the template, which will display an icon which when hovered over explains what a shapeless recipe is.
<pre style="max-width: 236px">{{Grid/Crafting Table
|shapeless= 1
|A1= |B1= Blaze Powder |C1=
|A2= |B2= Coal,Charcoal |C2=
|A3= |B3= Gunpowder |C3=
|Output= Fire Charge,3
}}</pre>
;produces:
{{Grid/Crafting Table
|shapeless= 1
|A1= |B1= Blaze Powder |C1=
|A2= |B2= Coal,Charcoal |C2=
|A3= |B3= Gunpowder |C3=
|Output= Fire Charge,3
}}
The shapeless parameter does not support animation, so shapeless and non-shapeless recipes cannot be combined.
=== Animated ===
To make the grid animate, you make a list of blocks and objects you want to show, separated by semi-colons.
<pre style="max-width: 616px">{{Grid/Crafting Table
|A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli
|A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli
|A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli
|Output= Lapis Lazuli,9; Lapis Lazuli Block
}}</pre>
;produces:
{{Grid/Crafting Table
|A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli
|A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli
|A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli
|Output= Lapis Lazuli,9; Lapis Lazuli Block
}}
<pre style="max-width: 602px">{{Grid/Crafting Table
|A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block
}}</pre>
;produces:
{{Grid/Crafting Table
|A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block
}}
=== Mods ===
Mod images and normal images can be combined just like in a single grid.
When uploading mod images, they must have the mod page name in parenthesis at the end. For example Fancystone (FancyPack).
The Mod parameter can be used to set a default used for all parameters, this is best used when all items in the crafting table are modded items, or if the mod name is long and using the vanilla (v) parameter for the vanilla items in the table would be quicker.
<pre style="max-width: 848px">{{Grid/Crafting Table
|A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust
|A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit
|A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone
|Output= IndustrialCraft:Advanced Circuit,2
}}</pre>
;or
<pre style="max-width: 656px">{{Grid/Crafting Table
|Mod= IndustrialCraft
|A1= v:Redstone Dust |B1= Cable |C1= vanilla:Glowstone Dust
|A2= Electronic Circuit |B2= V:Lapis Lazuli Block |C2= Electronic Circuit
|A3= Vanilla:Glowstone Dust |B3= Cable |C3= v:Redstone Dust
|Output= Advanced Circuit,2
}}</pre>
;produces:
{{Grid/Crafting Table
|A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust
|A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit
|A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone
|Output= IndustrialCraft:Advanced Circuit,2
}}
Note the links of the vanilla Minecraft items, compared to the IndustrialCraft items.
Animation is fully supported between mod and vanilla items.
{{loadPage|Template:Grid/Available images|Available images}}
== See also ==
{{Grid/See also}}
{{doc/end}}
fac076b7534f59ae1e5b6d86304b79bb325b6e9d
Module:Grid/Aliases
828
77
134
2024-05-02T17:29:13Z
Axxyyy
2
Created page with "return { ['Any fuel'] = 'Coal; Charcoal; Oak Wood; Oak Wood Planks', ['Any Wood'] = 'Oak Wood; Spruce Wood; Birch Wood; Jungle Wood; Acacia Wood; Dark Oak Wood', ['Any Wood Planks'] = 'Oak Wood Planks; Spruce Wood Planks; Birch Wood Planks; Jungle Wood Planks; Acacia Wood Planks; Dark Oak Wood Planks', ['Any Wood Stairs'] = 'Oak Wood Stairs; Spruce Wood Stairs; Birch Wood Stairs; Jungle Wood Stairs; Acacia Wood Stairs; Dark Oak Wood Stairs', ['Any Wood Slab'] = '..."
Scribunto
text/plain
return {
['Any fuel'] = 'Coal; Charcoal; Oak Wood; Oak Wood Planks',
['Any Wood'] = 'Oak Wood; Spruce Wood; Birch Wood; Jungle Wood; Acacia Wood; Dark Oak Wood',
['Any Wood Planks'] = 'Oak Wood Planks; Spruce Wood Planks; Birch Wood Planks; Jungle Wood Planks; Acacia Wood Planks; Dark Oak Wood Planks',
['Any Wood Stairs'] = 'Oak Wood Stairs; Spruce Wood Stairs; Birch Wood Stairs; Jungle Wood Stairs; Acacia Wood Stairs; Dark Oak Wood Stairs',
['Any Wood Slab'] = 'Oak Wood Slab; Spruce Wood Slab; Birch Wood Slab; Jungle Wood Slab; Acacia Wood Slab; Dark Oak Wood Slab',
['Any Wool'] = 'Orange Wool; Magenta Wool; Light Blue Wool; Yellow Wool; Lime Wool; Pink Wool; Gray Wool; Light Gray Wool; Cyan Wool; Purple Wool; Blue Wool; Brown Wool; Green Wool; Red Wool; Black Wool',
['Any Carpet'] = 'White Carpet; Orange Carpet; Magenta Carpet; Light Blue Carpet; Yellow Carpet; Lime Carpet; Pink Carpet; Gray Carpet; Light Gray Carpet; Cyan Carpet; Purple Carpet; Blue Carpet; Brown Carpet; Green Carpet; Red Carpet; Black Carpet',
['Any Dye'] = 'Orange Dye; Magenta Dye; Light Blue Dye; Dandelion Yellow; Lime Dye; Pink Dye; Gray Dye; Light Gray Dye; Cyan Dye; Purple Dye; Lapis Lazuli; Cocoa Beans; Cactus Green; Rose Red; Ink Sac',
['Any Sandstone'] = 'Sandstone; Chiseled Sandstone; Smooth Sandstone',
['Any Quartz Block'] = 'Block of Quartz; Chiseled Quartz Block; Pillar Quartz Block',
['Any Stone Bricks'] = 'Stone Bricks; Mossy Stone Bricks; Cracked Stone Bricks; Chiseled Stone Brick',
['Any Stained Glass'] = 'White Stained Glass; Orange Stained Glass; Magenta Stained Glass; Light Blue Stained Glass; Yellow Stained Glass; Lime Stained Glass; Pink Stained Glass; Gray Stained Glass; Light Gray Stained Glass; Cyan Stained Glass; Purple Stained Glass; Blue Stained Glass; Brown Stained Glass; Green Stained Glass; Red Stained Glass; Black Stained Glass',
['Any Stained Glass Pane'] = 'White Stained Glass Pane; Orange Stained Glass Pane; Magenta Stained Glass Pane; Light Blue Stained Glass Pane; Yellow Stained Glass Pane; Lime Stained Glass Pane; Pink Stained Glass Pane; Gray Stained Glass Pane; Light Gray Stained Glass Pane; Cyan Stained Glass Pane; Purple Stained Glass Pane; Blue Stained Glass Pane; Brown Stained Glass Pane; Green Stained Glass Pane; Red Stained Glass Pane; Black Stained Glass Pane',
['Any Stained Clay'] = 'White Stained Clay; Orange Stained Clay; Magenta Stained Clay; Light Blue Stained Clay; Yellow Stained Clay; Lime Stained Clay; Pink Stained Clay; Gray Stained Clay; Light Gray Stained Clay; Cyan Stained Clay; Purple Stained Clay; Blue Stained Clay; Brown Stained Clay; Green Stained Clay; Red Stained Clay; Black Stained Clay',
['Any Firework Star'] = 'White Firework Star; Orange Firework Star; Magenta Firework Star; Light Blue Firework Star; Yellow Firework Star; Lime Firework Star; Pink Firework Star; Gray Firework Star; Light Gray Firework Star; Cyan Firework Star; Purple Firework Star; Blue Firework Star; Brown Firework Star; Green Firework Star; Red Firework Star; Black Firework Star',
['Golden Apple'] = '[&b]Golden Apple',
['Enchanted Golden Apple'] = '[&d]Golden Apple',
['Clay (block)'] = '[Clay]Clay (block)',
['End Portal (block)'] = '[End Portal]End Portal (block)',
['Snow (cover)'] = '[Snow]Snow (cover)',
-- Added for ProjectRed
['Any Illumar'] = 'White Illumar; Orange Illumar; Magenta Illumar; Light Blue Illumar; Yellow Illumar; Lime Illumar; Pink Illumar; Grey Illumar; Light Grey Illumar; Cyan Illumar; Purple Illumar; Blue Illumar; Brown Illumar; Green Illumar; Red Illumar; Black Illumar',
['Any Lamp'] = 'White Lamp; Orange Lamp; Magenta Lamp; Light Blue Lamp; Yellow Lamp; Lime Lamp; Pink Lamp; Grey Lamp; Light Grey Lamp; Cyan Lamp; Purple Lamp; Blue Lamp; Brown Lamp; Green Lamp; Red Lamp; Black Lamp',
['Any Inverted Lamp'] = 'Inverted White Lamp; Inverted Orange Lamp; Inverted Magenta Lamp; Inverted Light Blue Lamp; Inverted Yellow Lamp; Inverted Lime Lamp; Inverted Pink Lamp; Inverted Grey Lamp; Inverted Light Grey Lamp; Inverted Cyan Lamp; Inverted Purple Lamp; Inverted Blue Lamp; Inverted Brown Lamp; Inverted Green Lamp; Inverted Red Lamp; Inverted Black Lamp',
['Any Stained Sapling'] = 'White Stained Sapling; Orange Stained Sapling; Magenta Stained Sapling; Light Blue Stained Sapling; Yellow Stained Sapling; Lime Stained Sapling; Pink Stained Sapling; Grey Stained Sapling; Light Grey Stained Sapling; Cyan Stained Sapling; Purple Stained Sapling; Blue Stained Sapling; Brown Stained Sapling; Green Stained Sapling; Red Stained Sapling; Black Stained Sapling',
['Any Lantern'] = 'White Lantern; Orange Lantern; Magenta Lantern; Light Blue Lantern; Yellow Lantern; Lime Lantern; Pink Lantern; Grey Lantern; Light Grey Lantern; Cyan Lantern; Purple Lantern; Blue Lantern; Brown Lantern; Green Lantern; Red Lantern; Black Lantern',
['Any Inverted Lantern'] = 'Inverted White Lantern; Inverted Orange Lantern; Inverted Magenta Lantern; Inverted Light Blue Lantern; Inverted Yellow Lantern; Inverted Lime Lantern; Inverted Pink Lantern; Inverted Grey Lantern; Inverted Light Grey Lantern; Inverted Cyan Lantern; Inverted Purple Lantern; Inverted Blue Lantern; Inverted Brown Lantern; Inverted Green Lantern; Inverted Red Lantern; Inverted Black Lantern',
['Any Illumar Button'] = 'White Illumar Button; Orange Illumar Button; Magenta Illumar Button; Light Blue Illumar Button; Yellow Illumar Button; Lime Illumar Button; Pink Illumar Button; Grey Illumar Button; Light Grey Illumar Button; Cyan Illumar Button; Purple Illumar Button; Blue Illumar Button; Brown Illumar Button; Green Illumar Button; Red Illumar Button; Black Illumar Button',
['Any Cage Lamp'] = 'White Cage Lamp; Orange Cage Lamp; Magenta Cage Lamp; Light Blue Cage Lamp; Yellow Cage Lamp; Lime Cage Lamp; Pink Cage Lamp; Grey Cage Lamp; Light Grey Cage Lamp; Cyan Cage Lamp; Purple Cage Lamp; Blue Cage Lamp; Brown Cage Lamp; Green Cage Lamp; Red Cage Lamp; Black Cage Lamp',
['Any Inverted Cage Lamp'] = 'Inverted White Cage Lamp; Inverted Orange Cage Lamp; Inverted Magenta Cage Lamp; Inverted Light Blue Cage Lamp; Inverted Yellow Cage Lamp; Inverted Lime Cage Lamp; Inverted Pink Cage Lamp; Inverted Grey Cage Lamp; Inverted Light Grey Cage Lamp; Inverted Cyan Cage Lamp; Inverted Purple Cage Lamp; Inverted Blue Cage Lamp; Inverted Brown Cage Lamp; Inverted Green Cage Lamp; Inverted Red Cage Lamp; Inverted Black Cage Lamp',
['Any Fixture'] = 'White Fixture; Orange Fixture; Magenta Fixture; Light Blue Fixture; Yellow Fixture; Lime Fixture; Pink Fixture; Grey Fixture; Light Grey Fixture; Cyan Fixture; Purple Fixture; Blue Fixture; Brown Fixture; Green Fixture; Red Fixture; Black Fixture',
['Any Inverted Fixture'] = 'Inverted White Fixture; Inverted Orange Fixture; Inverted Magenta Fixture; Inverted Light Blue Fixture; Inverted Yellow Fixture; Inverted Lime Fixture; Inverted Pink Fixture; Inverted Grey Fixture; Inverted Light Grey Fixture; Inverted Cyan Fixture; Inverted Purple Fixture; Inverted Blue Fixture; Inverted Brown Fixture; Inverted Green Fixture; Inverted Red Fixture; Inverted Black Fixture',
}
cfb5f40c7bc07491ef1dd969afe6a458bc8a5753
File:Grid layout Arrow (small).png
6
78
135
2024-05-02T17:30:25Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Crafting GUI.png
6
79
136
2024-05-02T17:42:08Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Crafting2x2.png
6
80
137
2024-05-02T17:42:46Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Grid layout None (small).png
6
81
138
2024-05-02T17:44:09Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Grid layout Shapeless.png
6
82
139
2024-05-02T17:44:25Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Grid layout None (large).png
6
83
140
2024-05-02T17:45:05Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Grid Blaze Powder.png
6
84
141
2024-05-02T17:49:35Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Crafting3x3.png
6
85
142
2024-05-02T18:12:09Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:Grid/Crafting Table
10
86
143
2024-05-02T18:17:03Z
Axxyyy
2
Created page with "<includeonly>{{#invoke:grid|craftingTable}}</includeonly> <noinclude> {{/doc}} </noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:grid|craftingTable}}</includeonly>
<noinclude>
{{/doc}}
</noinclude>
540ec2d363d68f6b5dcce0e04f9d9435ea61be8e
Template:Slot
10
87
144
2024-05-02T18:40:11Z
Axxyyy
2
Redirected page to [[Template:Inventory slot]]
wikitext
text/x-wiki
#REDIRECT [[Template:Inventory slot]]
e56425bdc12fe49f9e3f05434db183e3994cf626
Module:InfoBox
828
88
145
2024-05-02T22:26:41Z
Axxyyy
2
Created page with "local p = {} function p.infobox( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local title = args.title or mw.title.getCurrentTitle().baseText local imageArea = args.imagearea if not imageArea and imageArea ~= 'none' then local images = {} local invImages = {} local defaultImageSize = args.defaultimagesize or '150px' args.image1 = args.image1 or args.image or 'title' args.image1size = args.image1size or args.imagesize args.invimage1 = a..."
Scribunto
text/plain
local p = {}
function p.infobox( f )
local args = require( 'Module:ProcessArgs' ).merge( true )
local title = args.title or mw.title.getCurrentTitle().baseText
local imageArea = args.imagearea
if not imageArea and imageArea ~= 'none' then
local images = {}
local invImages = {}
local defaultImageSize = args.defaultimagesize or '150px'
args.image1 = args.image1 or args.image or 'title'
args.image1size = args.image1size or args.imagesize
args.invimage1 = args.invimage1 or args.invimage or 'title'
local imgCount = {}
local invImgCount = {}
local grid
for k, v in pairs( args ) do
if type( k ) == 'string' then
local image, num = k:match( '^(image)(%d+)$' )
local invImage, invNum = k:match( '^(invimage)(%d+)$' )
if v:lower() ~= 'none' then
if image then
table.insert( imgCount, tonumber( num ) )
elseif invImage then
table.insert( invImgCount, tonumber( invNum ) )
end
end
end
end
table.sort( imgCount )
local animate
for k, v in ipairs( imgCount ) do
local image = args['image' .. v]
local size = args['image' .. v .. 'size'] or defaultImageSize
if image == 'title' then
local imageTitle = mw.title.new( 'File:' .. title .. '.png' )
if imageTitle and imageTitle.exists then
image = '[[File:' .. title .. '.png|' .. size .. ']]'
elseif mw.title.getCurrentTitle().namespace == 0 then
image = '[[File:No image.svg|' .. size .. '|link=File:' .. title .. '.png|Upload ' .. title .. '.png]]'
else
image = '[[File:No image.svg|' .. size .. '|link=]]'
end
elseif image:match( ';' ) then
if not animate then
animate = require( 'Module:Animate' ).animate
end
image = animate{ image, size }
else
image = '[[File:' .. image .. '|' .. size .. ']]'
end
table.insert( images, '<div>' .. image .. '</div>' )
end
images = table.concat( images, '\n' )
if #invImgCount > 0 then
table.sort( invImgCount )
local grid
for k, v in ipairs( invImgCount ) do
local image = args['invimage' .. v]
if image == 'title' then
local imageTitle = mw.title.new( 'File:Grid ' .. title .. '.png' )
if imageTitle and imageTitle.exists then
image = title
else
image = false
end
end
if image then
if not grid then
grid = require( 'Module:Grid' ).cell
end
table.insert( invImages, grid{ image, link = 'none' } )
end
end
if #invImages > 0 then
invImages = '<div class="infobox-invimages">' .. table.concat( invImages, '' ) .. '</div>'
else
invImages = ''
end
else
invImages = ''
end
if images ~= '' or invImages ~= '' then
imageArea = images .. '\n' .. invImages
else
imageArea = 'none'
end
end
if imageArea and imageArea ~= 'none' then
imageArea = '<div class="infobox-imagearea">' .. imageArea .. '</div>'
else
imageArea = ''
end
local footer = args.footer
if footer then
footer = '| class="infobox-footer" colspan="2" | ' .. footer
end
local html = {
'<div class="notaninfobox">',
'<div class="infobox-title mcwiki-header">' .. title .. '</div>',
imageArea,
'{| class="infobox-rows" cellspacing="1" cellpadding="4"',
'|-',
args.rows or '',
footer or '',
'|}',
'</div>'
}
return table.concat( html, '\n' )
end
return p
731643c30d4b33c55af8931cbff7f233756f6af4
Template:Item
10
89
146
2024-05-02T22:28:14Z
Axxyyy
2
Created page with "<includeonly>{{#invoke:infobox|infobox | rows = {{infobox row|label=Type|field={{ #if: {{{type|}}} | {{{type}}} | ? }} }} {{#if: {{{otherosonly|}}} | {{infobox row|label=Only available in|field={{{otherosonly}}} }} }} {{infobox row|label=Durability|field={{ #if: {{{durability|}}} | {{{durability}}} | N/A }} }} {{infobox row|label=Renewable|field={{ #if: {{{renewable|}}} | {{{renewable}}} | ? }} }} {{infobox row|label=Stackable|field={{ #if: {{{stackable|}}} | {{{stackabl..."
wikitext
text/x-wiki
<includeonly>{{#invoke:infobox|infobox
| rows =
{{infobox row|label=Type|field={{ #if: {{{type|}}} | {{{type}}} | ? }} }}
{{#if: {{{otherosonly|}}} | {{infobox row|label=Only available in|field={{{otherosonly}}} }} }}
{{infobox row|label=Durability|field={{ #if: {{{durability|}}} | {{{durability}}} | N/A }} }}
{{infobox row|label=Renewable|field={{ #if: {{{renewable|}}} | {{{renewable}}} | ? }} }}
{{infobox row|label=Stackable|field={{ #if: {{{stackable|}}} | {{{stackable}}} | ? }} }}
{{#if: {{{multiplevers|}}}
| {{infobox row|label=First appearances|field={{{multiplevers}}} }}
| {{#if: {{{firstver|}}} | {{infobox row|label=First appearance|field={{version link|{{{firstver}}}}} }} }}
}}
{{#if: {{{multipledata|}}}
| {{infobox row|label=[[Data values]]|field={{{multipledata}}} }}
| {{#if: {{{data|}}} | {{infobox row|label=[[Data values|Data value]]|field={{data value|{{{data}}} }} }} }}
}}
{{#if: {{NAMESPACE}}
|
| {{#ifeq: {{lc: {{{nameid}}} }} | none
|
| {{infobox row|label=Name|field={{
#if: {{{nameid|}}}
| {{{nameid}}}
| {{lc: {{#replace: {{#if: {{{title|}}} | {{{title}}} | {{BASEPAGENAME}} }} || _ }} }}
}}}}
}}
}}
}}{{
#if: {{{nocat|}}}{{NAMESPACE}} ||
{{#if:{{{type|}}}|{{#ifeq:{{{type}}}|Items||[[Category:{{{type}}}]]}}}}
{{#switch: {{lc: {{{renewable|}}} }}
| yes = [[Category:Renewable resources]]
| no = [[Category:Non-renewable resources]]
| [[Category:Resources with invalid renewability]]
}}
}}</includeonly><noinclude>
{{/doc}}
[[Category:Infobox templates]]
</noinclude>
31f71e672f52fc0fe9d3cbae95c077559ca70280
Module:Infobox
828
90
147
2024-05-02T22:29:12Z
Axxyyy
2
Created page with "local p = {} function p.infobox( f ) local args = require( 'Module:ProcessArgs' ).merge( true ) local title = args.title or mw.title.getCurrentTitle().baseText local imageArea = args.imagearea if not imageArea and imageArea ~= 'none' then local images = {} local invImages = {} local defaultImageSize = args.defaultimagesize or '150px' args.image1 = args.image1 or args.image or 'title' args.image1size = args.image1size or args.imagesize args.invimage1 = a..."
Scribunto
text/plain
local p = {}
function p.infobox( f )
local args = require( 'Module:ProcessArgs' ).merge( true )
local title = args.title or mw.title.getCurrentTitle().baseText
local imageArea = args.imagearea
if not imageArea and imageArea ~= 'none' then
local images = {}
local invImages = {}
local defaultImageSize = args.defaultimagesize or '150px'
args.image1 = args.image1 or args.image or 'title'
args.image1size = args.image1size or args.imagesize
args.invimage1 = args.invimage1 or args.invimage or 'title'
local imgCount = {}
local invImgCount = {}
local grid
for k, v in pairs( args ) do
if type( k ) == 'string' then
local image, num = k:match( '^(image)(%d+)$' )
local invImage, invNum = k:match( '^(invimage)(%d+)$' )
if v:lower() ~= 'none' then
if image then
table.insert( imgCount, tonumber( num ) )
elseif invImage then
table.insert( invImgCount, tonumber( invNum ) )
end
end
end
end
table.sort( imgCount )
local animate
for k, v in ipairs( imgCount ) do
local image = args['image' .. v]
local size = args['image' .. v .. 'size'] or defaultImageSize
if image == 'title' then
local imageTitle = mw.title.new( 'File:' .. title .. '.png' )
if imageTitle and imageTitle.exists then
image = '[[File:' .. title .. '.png|' .. size .. ']]'
elseif mw.title.getCurrentTitle().namespace == 0 then
image = '[[File:No image.svg|' .. size .. '|link=File:' .. title .. '.png|Upload ' .. title .. '.png]]'
else
image = '[[File:No image.svg|' .. size .. '|link=]]'
end
elseif image:match( ';' ) then
if not animate then
animate = require( 'Module:Animate' ).animate
end
image = animate{ image, size }
else
image = '[[File:' .. image .. '|' .. size .. ']]'
end
table.insert( images, '<div>' .. image .. '</div>' )
end
images = table.concat( images, '\n' )
if #invImgCount > 0 then
table.sort( invImgCount )
local grid
for k, v in ipairs( invImgCount ) do
local image = args['invimage' .. v]
if image == 'title' then
local imageTitle = mw.title.new( 'File:Grid ' .. title .. '.png' )
if imageTitle and imageTitle.exists then
image = title
else
image = false
end
end
if image then
if not grid then
grid = require( 'Module:Grid' ).cell
end
table.insert( invImages, grid{ image, link = 'none' } )
end
end
if #invImages > 0 then
invImages = '<div class="infobox-invimages">' .. table.concat( invImages, '' ) .. '</div>'
else
invImages = ''
end
else
invImages = ''
end
if images ~= '' or invImages ~= '' then
imageArea = images .. '\n' .. invImages
else
imageArea = 'none'
end
end
if imageArea and imageArea ~= 'none' then
imageArea = '<div class="infobox-imagearea">' .. imageArea .. '</div>'
else
imageArea = ''
end
local footer = args.footer
if footer then
footer = '| class="infobox-footer" colspan="2" | ' .. footer
end
local html = {
'<div class="notaninfobox">',
'<div class="infobox-title mcwiki-header">' .. title .. '</div>',
imageArea,
'{| class="infobox-rows" cellspacing="1" cellpadding="4"',
'|-',
args.rows or '',
footer or '',
'|}',
'</div>'
}
return table.concat( html, '\n' )
end
return p
731643c30d4b33c55af8931cbff7f233756f6af4
Template:Infobox row
10
91
148
2024-05-02T22:30:05Z
Axxyyy
2
Created page with "<includeonly>! {{ucfirst: {{{1|{{{label|}}}}}} }} | {{{2|{{{field|}}}}}} |-</includeonly><noinclude> {{/doc}} [[Category:Infobox templates]] </noinclude>"
wikitext
text/x-wiki
<includeonly>! {{ucfirst: {{{1|{{{label|}}}}}} }}
|
{{{2|{{{field|}}}}}}
|-</includeonly><noinclude>
{{/doc}}
[[Category:Infobox templates]]
</noinclude>
d9aab638f9231e45e42eb38f569c1c7b5e49e57f
Template:Infobox row/doc
10
92
149
2024-05-02T22:30:23Z
Axxyyy
2
Created page with "{{doc/start}} === Usage === This is a skeleton for infobox rows, for use in {{tl|infobox}}. <pre style="width: 154px">{{infobox row | label | data }}</pre> {{doc/end}}"
wikitext
text/x-wiki
{{doc/start}}
=== Usage ===
This is a skeleton for infobox rows, for use in {{tl|infobox}}.
<pre style="width: 154px">{{infobox row
| label
| data
}}</pre>
{{doc/end}}
c6ee91fe4e70d807919a5c60dca84c69f5f83ef7
File:Grid Ceramic.png
6
93
150
2024-05-02T22:33:39Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:Grid
10
94
151
2024-05-02T22:45:59Z
Axxyyy
2
Redirected page to [[Template:Inventory slot]]
wikitext
text/x-wiki
#REDIRECT [[Template:Inventory slot]]
e56425bdc12fe49f9e3f05434db183e3994cf626
Template:Inventory slot
10
95
152
2024-05-02T22:46:29Z
Axxyyy
2
Created page with "<includeonly>{{#invoke: inventory slot | slot }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page -->"
wikitext
text/x-wiki
<includeonly>{{#invoke: inventory slot | slot }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwiki on the documentation page -->
7b1139fc59ddd8138d38ebee3d6131f458d4fc23
Template:Item/doc
10
96
153
2024-05-02T22:49:29Z
Axxyyy
2
Created page with "{doc/start}} {{lua|Infobox}} {{Item}} This template provides a uniform design for usable item pages. When an item restores health, it is recommended to use [[Template:Food]] instead. <pre width="30px"> {{Item |title= |image= |imagesize= |image2= |image2size= |image3= |image3size= |invimage= |invimage2= |invimage3= |invimage4= |invimage5= |invimage6= |invimage7= |invimage8= |invimage9= |invimage10= |invimage11= |invimage12= |invimage13= |invimage14= |invimage15= |invimage..."
wikitext
text/x-wiki
{doc/start}}
{{lua|Infobox}}
{{Item}}
This template provides a uniform design for usable item pages. When an item restores health, it is recommended to use [[Template:Food]] instead.
<pre width="30px">
{{Item
|title=
|image=
|imagesize=
|image2=
|image2size=
|image3=
|image3size=
|invimage=
|invimage2=
|invimage3=
|invimage4=
|invimage5=
|invimage6=
|invimage7=
|invimage8=
|invimage9=
|invimage10=
|invimage11=
|invimage12=
|invimage13=
|invimage14=
|invimage15=
|invimage16=
|invimage17=
|invimage18=
|invimage19=
|invimage20=
|invimage21=
|invimage22=
|invimage23=
|invimage24=
|invimage25=
|type=
|otherosonly=
|durability=
|renewable=
|stackable=
|availability=
|data=
|nameid=
|firstver=
}}</pre>
Please note that if the item has multiple data values, use <code><nowiki>|multipledata=</nowiki></code> instead. See below:
{| class="wikitable"
! Parameter
! Function
! Default/Example value
|-
| <code>title</code> || Optional value to use a different title instead of the page name || <code><nowiki>{{BASEPAGENAME}}</nowiki></code>
|-
| <code>image</code> || Image of the block (should be approx. 150x150px) || <code><nowiki>{{{title}}}.png</nowiki></code> if it exists, otherwise [[:File:No image.svg|No image.svg]] (linking to the page where to upload the missing image)
|-
| <code>imagesize</code> || Adjusts the size of the image || 150px
|-
| <code>image2</code> || Image of the block (should be approx. 150x150px) || ''None''
|-
| <code>image2size</code> || Adjusts the size of the second image || 150px
|-
| <code>image3</code> || Image of the block (should be approx. 150x150px) || ''None''
|-
| <code>image3size</code> || Adjusts the size of the third image || 150px
|-
| <code>invimage</code> || Image for object in inventory. Can use '''None''' to force no invimage. Uses [[Template:Grid]]. || <code><nowiki>Grid {{{title}}}.png</nowiki></code> if it exists, otherwise ''None''
|-
| <code>invimage2</code> || Second image for two-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage3</code> || Third image for three-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage4</code> || Fourth image for four-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage5</code> || Fifth image for five-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage6</code> || Sixth image for six-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage7</code> || Seventh image for seven-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage8</code> || Eighth image for eight-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage9</code> || Ninth image for nine-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage10</code> || Tenth image for ten-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage11</code> || Eleventh image for eleven-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage12</code> || Twelfth image for twelve-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage13</code> || Thirteenth image for thirteen-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage14</code> || Fourteenth image for fourteen-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage15</code> || Fifteenth image for fifteen-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage16</code> || Sixteenth image for sixteen-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage17</code> || Seventeenth image for seventeen-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage18</code> || Eighteenth image for eighteen-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage19</code> || Nineteenth image for nineteen-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage20</code> || Twentieth image for twenty-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage21</code> || Twenty-First image for twenty-one-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage22</code> || Twenty-Second image for twenty-two-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage23</code> || Twenty-Third image for twenty-three-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage24</code> || Twenty-Forth image for twenty-four-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>invimage25</code> || Twenty-Fifth image for twenty-five-state objects in inventory. Uses [[Template:Grid]]. || ''None''
|-
| <code>type</code> || Type (Weapon, Ranged Weapon, Craftable Item, Tool, etc. ) || ?
|-
| <code>otherosonly</code> || For use if the item is only available in a specific version of Minecraft. || ''None''
|-
| <code>durability</code> || How durable the item is || N/A
|-
| <code>renewable</code> || Whether the item is [[Renewable Resources|renewable]] || ?
|-
| <code>stackable</code> || Stackable || ?
|-
| <code>availability </code> || The availability of an item || ?
|-
| <code>data</code> || Single decimal data value || ''None''
|-
| <code>nameid</code> || The item's named identifier. Can use '''None''' to force no name ID. || <code>title</code> or <code><nowiki>{{BASEPAGENAME}}</nowiki></code>
|-
| <code>multipledata</code> || Multiple decimal data values, use {{tl|dv}} || ''None''
|-
| <code>firstver</code> || First version that it was seen in (e.g. Alpha 1.0.17, classic 0.0.23a). || ''None''
|}
== See also ==
{{Infobox see also}}
{{doc/end}}
39501c33a69e4e0d65b87db904602baa4c148c5f
Template:Inventory slot/doc
10
97
154
2024-05-03T01:28:23Z
Axxyyy
2
Created page with "{{shortcut|Slot}} {{lua|data=Inventory slot/Aliases}} The inventory slot template creates an interface element which looks and acts like an in-game inventory slot. The images used are primarily taken from {{tl|InvSprite}}, but if the specified item is not found, the template falls back to individual images in the format of <code>Grid ''<item name>''.png</code>. == Usage == All inputs are optional:<br> <pre>{{Slot |[Title]Mod:Name,Amount[Description]; [Title2]Mod2:Name2..."
wikitext
text/x-wiki
{{shortcut|Slot}}
{{lua|data=Inventory slot/Aliases}}
The inventory slot template creates an interface element which looks and acts like an in-game inventory slot.
The images used are primarily taken from {{tl|InvSprite}}, but if the specified item is not found, the template falls back to individual images in the format of <code>Grid ''<item name>''.png</code>.
== Usage ==
All inputs are optional:<br>
<pre>{{Slot
|[Title]Mod:Name,Amount[Description]; [Title2]Mod2:Name2,Amount2[Description2]; ...
|mod=Default mod (useful for animations and layout templates)
|default=Image always shown under the main image
|align=Vertical Alignment
|link=Link override
|title=Text show on mouseover
|class=Adds additional classes to the .invslot class
|style=Adds styling to the .invslot
|imgclass=Adds additional classes to the .invslot-item
|numstyle=Adds styling to the stack number
}}</pre>
=== Parts ===
The first parameter is a special parameter consisting of various "parts" grouped together in frames (delimited by <code>;</code>) which will be display one after another if JavaScript is enabled. Every part is optional, but without "name", won't do anything.
==== Simple example ====
To display an inventory item of "Raw Porkchop" with an stack size of 20 you would put: <code><nowiki>{{Slot|Raw Porkchop,20}}</nowiki></code>
;shows
{{Slot|Raw Porkchop,20}}
An amount of 2–999 is supported, anything else will not be displayed.
=== Aliases ===
{{#invoke: Inventory slot/Aliases/Table | table }}
Note: Banner variations are not included due to how many there are.
The above aliases can be used to shorten common items, such as all wood blocks or adding parts to certain names by default.
<code><nowiki>{{Slot|Any Wood;Golden Apple}}</nowiki></code>
;shows
{{Slot|Any Wood;Golden Apple}}
When using the alias, parts can be added which will override any parts in the alias.
<code><nowiki>{{Slot|Any Wood,4;[&oShiny Apple]Enchanted Golden Apple}}</nowiki></code>
;shows
{{Slot|Any Wood,4;[&oShiny Apple]Enchanted Golden Apple}}
Mods can specify an additional aliases table using the modaliases parameter.
=== Titles and description ===
The title parameter can be used to set a title for all frames.
<code><nowiki>{{Slot|Raw Porkchop; Cooked Porkchop|title=Smelly Porkchop}}</nowiki></code>
;shows
{{Slot|Raw Porkchop; Cooked Porkchop|title=Smelly Porkchop}}
To remove the title, set it to "none": <code><nowiki>{{Slot|Raw Porkchop; Cooked Porkchop|title=none}}</nowiki></code>
;shows
{{Slot|Raw Porkchop; Cooked Porkchop|title=none}}
However, the first bracketed text can be used to specify a title for each frame individually, and also supports standard [[formatting codes]] using <code>&</code> instead of <code>§</code>. If the title only contains formatting codes and no actual text, the formatting will be added to the normal title.
<code><nowiki>{{Slot|[&b]Diamond Sword}}</nowiki></code>
;shows
{{Slot|[&b]Diamond Sword}}
The last bracketed text can be used to specify a description, this also supports standard formatting codes, and can also have multiple lines by using forward slashes (/).
<code><nowiki>{{Slot|[&b&oExcalibur]Iron Sword[&7Smite V/Fire Aspect I//&9+6 Attack Damage]}}</nowiki></code>
;shows
{{Slot|[&b&oExcalibur]Iron Sword[&7Smite V/Fire Aspect I//&9+6 Attack Damage]}}
=== Subframes ===
Subframes are shown as a single frame, but the frames within it are advanced every time the subframe is displayed. A set of frames can be put in a subframe by wrapping it in braces.
Here, an alias (which resolves to multiple frames) is wrapped in a subframe, and a different wood plank variant is shown each animation cycle:
<code><nowiki>{{Slot|{Any Wood Planks};Iron Ingot}}</nowiki></code>
;shows
{{Slot|{Any Wood Planks};Iron Ingot}}
=== Align ===
Align uses the [http://www.w3.org/wiki/CSS/Properties/vertical-align vertical-align] CSS property. For example to align to the middle:
<code><nowiki>Smells like {{Slot|Raw Porkchop|align=middle}} in here!</nowiki></code>
;shows
Smells like {{Slot|Raw Porkchop|align=middle}} in here!
=== Default ===
Default is always shown and is placed under the image. <code><nowiki>{{Slot|default=Grid layout Brewing Empty}}{{Slot|Splash Mundane Potion|default=Grid layout Brewing Empty}}</nowiki></code>
;shows
{{Slot|default=Grid layout Brewing Empty}}{{Slot|Splash Mundane Potion|default=Grid layout Brewing Empty}}
=== Link ===
To change the link for all frames from the image name put: <code><nowiki>{{Slot|Charcoal|link=Coal#Charcoal}}</nowiki></code>
;shows
{{Slot|Charcoal|link=Coal#Charcoal}}
To remove the link, set link to none: <code><nowiki>{{Slot|Charcoal|link=none}}</nowiki></code>
;shows
{{Slot|Charcoal|link=none}}
Note that this retains the title.
=== Mods ===
<!-- TODO: Update for sprite usage -->
A mod image is specified with the Mod: section of the name (or by setting a default mod using the mod parameter). The image link will then link to the mod sub-page allowing correct linking of mod images. The uploaded image name should by uploaded as <code>Grid <Name> (<Mod>).png</code> and should be added to the [[:Category:Inventory slot mods|Inventory slot mods]] category, which prevents them from being confused with official Minecraft items.<br>
For example, to display this mod image [[:File:Grid Bronze Sword (IndustrialCraft).png]]: <code><nowiki>{{Slot|IndustrialCraft:Bronze Sword}}</nowiki></code> (or <code><nowiki>{{Slot|mod=IndustrialCraft|Bronze Sword}}</nowiki></code>)
;shows
{{Slot|IndustrialCraft:Bronze Sword}}
Slots can be animated with a theoretically unlimited amount of frames, between mod items and vanilla items. Frames are separated by semi-colons (;).
<pre>{{Slot|
Dirt;
TNT,64;
IndustrialCraft:Bronze Sword,6;
;
Grass Block,5;
Sand;
Gold Helmet,12;
IndustrialCraft:Bronze Helmet,2;
IndustrialCraft:Copper,50;
Redstone
}}</pre>
;shows
{{Slot|
Dirt;
TNT,64;
IndustrialCraft:Bronze Sword,6;
;
Grass Block,5;
Sand;
Gold Helmet,12;
IndustrialCraft:Bronze Helmet,2;
IndustrialCraft:Copper,50;
Redstone
}}
As you can see, the mod had to be specified for each mod frame, this is where the default mod parameter is useful.
<code><nowiki>{{Slot|mod=IndustrialCraft|Bronze Sword,6; ; Bronze Helmet,12; Copper,50; Copper Dust}}</nowiki></code>
;shows
{{Slot|mod=IndustrialCraft|Bronze Sword,6; ; Bronze Helmet,12; Copper,50; Copper Dust}}
To use a vanilla minecraft item when a default mod is set, use "vanilla" (shortcut "v") or "minecraft" (shortcut "mc") as the mod (case insensitive).
<pre>{{Slot|mod=IndustrialCraft|
Vanilla:Dirt;
vanilla:TNT,64;
Bronze Sword,6;
;
V:Grass Block,5;
v:Sand;
Minecraft:Gold Helmet,12;
Bronze Helmet,2;
Copper,50;
mc:Redstone Dust
}}</pre>
;shows
{{Slot|mod=IndustrialCraft|
Vanilla:Dirt;
vanilla:TNT,64;
Bronze Sword,6;
;
V:Grass Block,5;
v:Sand;
Minecraft:Gold Helmet,12;
Bronze Helmet,2;
Copper,50;
mc:Redstone Dust
}}
== Available images ==
In general, an item can be referred to by its tooltip name.
For dyes, dyed items and wood, there are two shortcuts to refer to all colors or tree species. Use e.g. "Any Wood Planks" if the item appears in more than one input slot and doesn't have to be the same color in all slots. Different copies of the same "Any [item]" will switch randomly and separately among the variants. Otherwise, use "Matching [item]"; all slots containing a "Matching" item will cycle through the species or dye colors in unison, even if they're not the same item.
<pre>
{{Slot|Any Wood Planks}}{{Slot|Any Wood Slab}}{{Slot|Any Wood Stairs}}
{{Slot|Matching Wood Planks}}{{Slot|Matching Wood Slab}}{{Slot|Matching Wood Stairs}}
</pre>
'''shows'''
{{Slot|Any Wood Planks}}{{Slot|Any Wood Slab}}{{Slot|Any Wood Stairs}}
{{Slot|Matching Wood Planks}}{{Slot|Matching Wood Slab}}{{Slot|Matching Wood Stairs}}
Most items with a durability bar exist as "Damaged [item]".
{{LoadPage|Template:InvSprite/Image list|List|h3|transcluded=1}}
== Other templates ==
These templates implement this template into a GUI screen which mimics how it would look in Minecraft. Thus, they have mostly the same features as this template.
{{UI see also}}
<includeonly>
<!-- Template categories/interwiki here -->
[[Category:Image templates]]
[[Category:Inventory templates]]
a19683ded39cdfd1b488a9035ec1f5980561f9d8
163
154
2024-05-03T18:29:40Z
Axxyyy
2
wikitext
text/x-wiki
{{shortcut|Slot}}
{{lua|data=Inventory slot/Aliases}}
The inventory slot template creates an interface element which looks and acts like an in-game inventory slot.
The images used are primarily taken from {{tl|InvSprite}}, but if the specified item is not found, the template falls back to individual images in the format of <code>Grid ''<item name>''.png</code>.
== Usage ==
All inputs are optional:<br>
<pre>{{Slot
|[Title]Mod:Name,Amount[Description]; [Title2]Mod2:Name2,Amount2[Description2]; ...
|mod=Default mod (useful for animations and layout templates)
|default=Image always shown under the main image
|align=Vertical Alignment
|link=Link override
|title=Text show on mouseover
|class=Adds additional classes to the .invslot class
|style=Adds styling to the .invslot
|imgclass=Adds additional classes to the .invslot-item
|numstyle=Adds styling to the stack number
}}</pre>
=== Parts ===
The first parameter is a special parameter consisting of various "parts" grouped together in frames (delimited by <code>;</code>) which will be display one after another if JavaScript is enabled. Every part is optional, but without "name", won't do anything.
==== Simple example ====
To display an inventory item of "Raw Porkchop" with an stack size of 20 you would put: <code><nowiki>{{Slot|Raw Porkchop,20}}</nowiki></code>
;shows
{{Slot|Raw Porkchop,20}}
An amount of 2–999 is supported, anything else will not be displayed.
The above aliases can be used to shorten common items, such as all wood blocks or adding parts to certain names by default.
<code><nowiki>{{Slot|Any Wood;Golden Apple}}</nowiki></code>
;shows
{{Slot|Any Wood;Golden Apple}}
When using the alias, parts can be added which will override any parts in the alias.
<code><nowiki>{{Slot|Any Wood,4;[&oShiny Apple]Enchanted Golden Apple}}</nowiki></code>
;shows
{{Slot|Any Wood,4;[&oShiny Apple]Enchanted Golden Apple}}
Mods can specify an additional aliases table using the modaliases parameter.
=== Titles and description ===
The title parameter can be used to set a title for all frames.
<code><nowiki>{{Slot|Raw Porkchop; Cooked Porkchop|title=Smelly Porkchop}}</nowiki></code>
;shows
{{Slot|Raw Porkchop; Cooked Porkchop|title=Smelly Porkchop}}
To remove the title, set it to "none": <code><nowiki>{{Slot|Raw Porkchop; Cooked Porkchop|title=none}}</nowiki></code>
;shows
{{Slot|Raw Porkchop; Cooked Porkchop|title=none}}
However, the first bracketed text can be used to specify a title for each frame individually, and also supports standard [[formatting codes]] using <code>&</code> instead of <code>§</code>. If the title only contains formatting codes and no actual text, the formatting will be added to the normal title.
<code><nowiki>{{Slot|[&b]Diamond Sword}}</nowiki></code>
;shows
{{Slot|[&b]Diamond Sword}}
The last bracketed text can be used to specify a description, this also supports standard formatting codes, and can also have multiple lines by using forward slashes (/).
<code><nowiki>{{Slot|[&b&oExcalibur]Iron Sword[&7Smite V/Fire Aspect I//&9+6 Attack Damage]}}</nowiki></code>
;shows
{{Slot|[&b&oExcalibur]Iron Sword[&7Smite V/Fire Aspect I//&9+6 Attack Damage]}}
=== Subframes ===
Subframes are shown as a single frame, but the frames within it are advanced every time the subframe is displayed. A set of frames can be put in a subframe by wrapping it in braces.
Here, an alias (which resolves to multiple frames) is wrapped in a subframe, and a different wood plank variant is shown each animation cycle:
<code><nowiki>{{Slot|{Any Wood Planks};Iron Ingot}}</nowiki></code>
;shows
{{Slot|{Any Wood Planks};Iron Ingot}}
=== Align ===
Align uses the [http://www.w3.org/wiki/CSS/Properties/vertical-align vertical-align] CSS property. For example to align to the middle:
<code><nowiki>Smells like {{Slot|Raw Porkchop|align=middle}} in here!</nowiki></code>
;shows
Smells like {{Slot|Raw Porkchop|align=middle}} in here!
=== Default ===
Default is always shown and is placed under the image. <code><nowiki>{{Slot|default=Grid layout Brewing Empty}}{{Slot|Splash Mundane Potion|default=Grid layout Brewing Empty}}</nowiki></code>
;shows
{{Slot|default=Grid layout Brewing Empty}}{{Slot|Splash Mundane Potion|default=Grid layout Brewing Empty}}
=== Link ===
To change the link for all frames from the image name put: <code><nowiki>{{Slot|Charcoal|link=Coal#Charcoal}}</nowiki></code>
;shows
{{Slot|Charcoal|link=Coal#Charcoal}}
To remove the link, set link to none: <code><nowiki>{{Slot|Charcoal|link=none}}</nowiki></code>
;shows
{{Slot|Charcoal|link=none}}
Note that this retains the title.
=== Mods ===
<!-- TODO: Update for sprite usage -->
A mod image is specified with the Mod: section of the name (or by setting a default mod using the mod parameter). The image link will then link to the mod sub-page allowing correct linking of mod images. The uploaded image name should by uploaded as <code>Grid <Name> (<Mod>).png</code> and should be added to the [[:Category:Inventory slot mods|Inventory slot mods]] category, which prevents them from being confused with official Minecraft items.<br>
For example, to display this mod image [[:File:Grid Bronze Sword (IndustrialCraft).png]]: <code><nowiki>{{Slot|IndustrialCraft:Bronze Sword}}</nowiki></code> (or <code><nowiki>{{Slot|mod=IndustrialCraft|Bronze Sword}}</nowiki></code>)
;shows
{{Slot|IndustrialCraft:Bronze Sword}}
Slots can be animated with a theoretically unlimited amount of frames, between mod items and vanilla items. Frames are separated by semi-colons (;).
<pre>{{Slot|
Dirt;
TNT,64;
IndustrialCraft:Bronze Sword,6;
;
Grass Block,5;
Sand;
Gold Helmet,12;
IndustrialCraft:Bronze Helmet,2;
IndustrialCraft:Copper,50;
Redstone
}}</pre>
;shows
{{Slot|
Dirt;
TNT,64;
IndustrialCraft:Bronze Sword,6;
;
Grass Block,5;
Sand;
Gold Helmet,12;
IndustrialCraft:Bronze Helmet,2;
IndustrialCraft:Copper,50;
Redstone
}}
As you can see, the mod had to be specified for each mod frame, this is where the default mod parameter is useful.
<code><nowiki>{{Slot|mod=IndustrialCraft|Bronze Sword,6; ; Bronze Helmet,12; Copper,50; Copper Dust}}</nowiki></code>
;shows
{{Slot|mod=IndustrialCraft|Bronze Sword,6; ; Bronze Helmet,12; Copper,50; Copper Dust}}
To use a vanilla minecraft item when a default mod is set, use "vanilla" (shortcut "v") or "minecraft" (shortcut "mc") as the mod (case insensitive).
<pre>{{Slot|mod=IndustrialCraft|
Vanilla:Dirt;
vanilla:TNT,64;
Bronze Sword,6;
;
V:Grass Block,5;
v:Sand;
Minecraft:Gold Helmet,12;
Bronze Helmet,2;
Copper,50;
mc:Redstone Dust
}}</pre>
;shows
{{Slot|mod=IndustrialCraft|
Vanilla:Dirt;
vanilla:TNT,64;
Bronze Sword,6;
;
V:Grass Block,5;
v:Sand;
Minecraft:Gold Helmet,12;
Bronze Helmet,2;
Copper,50;
mc:Redstone Dust
}}
== Available images ==
In general, an item can be referred to by its tooltip name.
For dyes, dyed items and wood, there are two shortcuts to refer to all colors or tree species. Use e.g. "Any Wood Planks" if the item appears in more than one input slot and doesn't have to be the same color in all slots. Different copies of the same "Any [item]" will switch randomly and separately among the variants. Otherwise, use "Matching [item]"; all slots containing a "Matching" item will cycle through the species or dye colors in unison, even if they're not the same item.
<pre>
{{Slot|Any Wood Planks}}{{Slot|Any Wood Slab}}{{Slot|Any Wood Stairs}}
{{Slot|Matching Wood Planks}}{{Slot|Matching Wood Slab}}{{Slot|Matching Wood Stairs}}
</pre>
'''shows'''
{{Slot|Any Wood Planks}}{{Slot|Any Wood Slab}}{{Slot|Any Wood Stairs}}
{{Slot|Matching Wood Planks}}{{Slot|Matching Wood Slab}}{{Slot|Matching Wood Stairs}}
Most items with a durability bar exist as "Damaged [item]".
{{LoadPage|Template:InvSprite/Image list|List|h3|transcluded=1}}
== Other templates ==
These templates implement this template into a GUI screen which mimics how it would look in Minecraft. Thus, they have mostly the same features as this template.
{{UI see also}}
<includeonly>
<!-- Template categories/interwiki here -->
[[Category:Image templates]]
[[Category:Inventory templates]]
83fc9727e3a6c9f5516cb1d28428527ba18c29c5
Inventory slot/Aliases/Table
0
98
155
2024-05-03T01:38:50Z
Axxyyy
2
Created blank page
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:TNT
10
102
159
2024-05-03T18:23:18Z
Axxyyy
2
Redirected page to [[Template:Translatable template]]
wikitext
text/x-wiki
#REDIRECT [[Template:Translatable template]]
0a59ede536f86ef13cd55072f3ba8c2f95be721a
Template:Translatable template
10
103
160
2024-05-03T18:23:42Z
Axxyyy
2
Created page with "<includeonly>{{#invoke:Template translation{{{sandbox|}}}|renderTranslatedTemplate|uselang={{{uselang|}}}|tntns={{{namespace|{{{tntns|}}}}}}|template={{#if:{{{noshift|}}}|{{{template}}}|{{{1}}}}}|noshift={{{noshift|}}}<!-- all other numbered or named parameters are found by the module using the parent frame -->}}</includeonly><noinclude>{{documentation}}</noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:Template translation{{{sandbox|}}}|renderTranslatedTemplate|uselang={{{uselang|}}}|tntns={{{namespace|{{{tntns|}}}}}}|template={{#if:{{{noshift|}}}|{{{template}}}|{{{1}}}}}|noshift={{{noshift|}}}<!-- all other numbered or named parameters are found by the module using the parent frame -->}}</includeonly><noinclude>{{documentation}}</noinclude>
639aa3ce6c91c67b8151f8394f92cd2a44bb7a4b
Template:Translatable template/doc
10
104
161
2024-05-03T18:25:57Z
Axxyyy
2
Created page with "<noinclude>{{Documentation subpage}}</noinclude> {{Template shortcut|TNT|tnt}} {{high use}} == Purpose == This template, originally named "'''Translatable template'''" (often abbreviated as TNT, but which '''never''' meant "dynamite"!) is used to show translatable templates in the language of the current page. Templates, like all other MediaWiki pages, can be translated using the [[mw:Extension:Translate|Translate extension]], which creates subpages with the form "pagena..."
wikitext
text/x-wiki
<noinclude>{{Documentation subpage}}</noinclude>
{{Template shortcut|TNT|tnt}}
{{high use}}
== Purpose ==
This template, originally named "'''Translatable template'''" (often abbreviated as TNT, but which '''never''' meant "dynamite"!) is used to show translatable templates in the language of the current page. Templates, like all other MediaWiki pages, can be translated using the [[mw:Extension:Translate|Translate extension]], which creates subpages with the form "pagename/language code". The template first checks if the name of the page contains a language code. If it does, it then checks if the template name given as a first parameter has a translation in that language. If the page name does not contain a language code, or if the navigation template doesn't exist in that language, it will display the English template.
== How to use ==
* <span style="font-family: monospace;"><nowiki>{{Translatable template|</nowiki>''name of template''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span>
* <span style="font-family: monospace;"><nowiki>{{TNT|</nowiki>''name of template''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span>
* <span style="font-family: monospace;"><nowiki>{{tnt|</nowiki>''name of template''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span>
The above simplied syntax cannot work if the named template also needs to be transcluded in other translatable templates, because it would cause self-recursion of {{tl|Translatable template}}. An alternative is to use {{tl|Translatable template name}} which does not expand the template with its parameters, but only returns the resolved template name, which can then be
transcluded normally:
* <span style="font-family: monospace;"><nowiki>{{{{Translatable template name|</nowiki>''name of template''<nowiki>}}|</nowiki>''parameters....''<nowiki>}}</nowiki></span>
* <span style="font-family: monospace;"><nowiki>{{{{TNTN|</nowiki>''name of template''<nowiki>}}|</nowiki>''parameters....''<nowiki>}}</nowiki></span>
* <span style="font-family: monospace;"><nowiki>{{{{tntn|</nowiki>''name of template''<nowiki>}}|</nowiki>''parameters....''<nowiki>}}</nowiki></span>
Example (from [[Meta:Administrator]]):
: <span style="font-family: monospace;"><nowiki>{{Translatable template|User groups}}</nowiki></span> or <span style="font-family: monospace;"><nowiki>{{TNT|User groups}}</nowiki></span>
which includes translated versions of {{tl|User groups}} if it exists, or the English version if translations don't exist.
== Parameters ==
The current version of the template may now include any kind of named or numbered parameters, whose values will be transferred into the called template (with the exception of parameter 1 containing the basename of the translatable template to transclude). Numbered parameters will be shifted down by one position, all named parameters will be passed unchanged.
One named parameter is treated specially:
* <span style="font-family: monospace;"><nowiki>{{Translatable template|namespace=</nowiki>'':somename:''<nowiki>|</nowiki>''page name''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span>
* <span style="font-family: monospace;"><nowiki>{{TNT|namespace=</nowiki>'':somename:''<nowiki>|</nowiki>''page name''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span>
* <span style="font-family: monospace;"><nowiki>{{tnt|namespace=</nowiki>'':somename:''<nowiki>|</nowiki>''page name''<nowiki>|</nowiki>''parameters....''<nowiki>}}</nowiki></span>
This <span style="font-family: monospace;">namespace</span> will be used to specify another namespace from which the translatable pagename will be transcluded, instead of referencing the page name from the default <span style="font-family: monospace;">:Template:</span> namespace. Note that this parameter is also passed (without modification) within the parameters of the transclusion.
Example with one parameters (from [[Global sysops]]):
* <span style="font-family: monospace;"><nowiki>{{TNT|Special global permissions/Seealso|Global sysops}}</nowiki></span>
where the second parameter "Global sysops" is the value of the first numbered parameter transferred into called page "Special global permissions/Seealso".
== Dependency ==
* [[Module:Template translation]] (standard version)
* [[Module:Template translation/sandbox]] (used when this template is called with optional dummy parameter <span style="font-family: monospace;">sandbox=/sandbox</span>, for testing only)
== See also ==
* {{tl|Translatable template name}}, alias {{tl|TNTN}} or {{tl|tntn}}
* [[mw:Help:TemplateData|Extension:TemplateData]].
<includeonly>
<!-- PUT HERE THE CATEGORIES OF THE TEMPLATE -->
[[Category:Navigational templates|* {{PAGENAME}}]]
[[Category:Internationalization templates|{{PAGENAME}}]]
[[Category:Lua-based templates]]
[[Category:Modules for specific templates]]
[[Category:Lua libraries]]
</includeonly>
13a0b2281dd040b6d78c94ec35670e3e4ebf4c7e
File:Ceramic.png
6
108
166
2024-05-07T22:08:45Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Module:Sprite
828
5
167
9
2024-05-07T22:20:04Z
Axxyyy
2
Scribunto
text/plain
local p = {}
local CurrentFrame = mw.getCurrentFrame()
function p.base( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = CurrentFrame
end
local data = args.data and mw.loadData( 'Module:' .. args.data ) or {}
local settings = data.settings
-- Default settings
local default = {
scale = 1,
sheetsize = 256,
size = 16,
pos = 1,
align = 'text-top'
}
local defaultStyle = default
if settings then
if not settings.stylesheet then
-- Make a separate clone of the current default settings
defaultStyle = mw.clone( default )
end
for k, v in pairs( settings ) do
default[k] = v
end
end
local setting = function( arg )
return args[arg] or default[arg]
end
local sprite = mw.html.create( 'span' ):addClass( 'sprite' )
-- mw.html's css method performs very slow escaping, which doubles the time it takes
-- to run, so we'll construct the styles manually, and put them in the cssText
-- method, which only does html escaping (which isn't slow)
local styles = {}
if not setting( 'nourl' ) and setting( 'url' ) then
styles[#styles + 1] = 'background-image:' .. ( setting( 'url' ).url or setting( 'url' ) )
end
if setting( 'stylesheet' ) then
sprite:addClass(
setting( 'classname' ) or
mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite'
)
elseif not setting( 'url' ) then
styles[#styles + 1] = 'background-image:' .. p.getUrl(
setting( 'image' ) or setting( 'name' ) .. 'Sprite.png'
).url
end
local class = setting( 'class' )
if class then
sprite:addClass( class )
end
local width = setting( 'width' ) or setting( 'size' )
local height = setting( 'height' ) or setting( 'size' )
local sheetWidth = setting( 'sheetsize' )
local tiles = sheetWidth / width
local pos = setting( 'pos' ) - 1
local scale = setting( 'scale' )
local autoScale = setting( 'autoscale' )
if pos then
local left = pos % tiles * width * scale
local top = math.floor( pos / tiles ) * height * scale
styles[#styles + 1] = 'background-position:-' .. left .. 'px -' .. top .. 'px'
end
if not autoScale and scale ~= defaultStyle.scale then
styles[#styles + 1] = 'background-size:' .. sheetWidth * scale .. 'px auto'
end
if height ~= defaultStyle.size or width ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then
styles[#styles + 1] = 'height:' .. height * scale .. 'px'
styles[#styles + 1] = 'width:' .. width * scale .. 'px'
end
local align = setting( 'align' )
if align ~= defaultStyle.align then
styles[#styles + 1] = 'vertical-align:' .. align
end
styles[#styles + 1] = setting( 'css' )
sprite:cssText( table.concat( styles, ';' ) )
local text = setting( 'text' )
local root
local spriteText
if text then
if not args['wrap'] then
root = mw.html.create( 'span' ):addClass( 'nowrap' )
end
spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text )
end
local title = setting( 'title' )
if title then
( root or sprite ):attr( 'title', title )
end
if not root then
root = mw.html.create( '' )
end
root:node( sprite )
if spriteText then
root:node( spriteText )
end
local link = setting( 'link' ) or ''
if link ~= '' and mw.ustring.lower( link ) ~= 'none' then
-- External link
if link:find( '//' ) then
return '[' .. link .. ' ' .. tostring( root ) .. ']'
end
-- Internal link
local linkPrefix = setting( 'linkprefix' ) or ''
return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]'
end
return tostring( root )
end
function p.sprite( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = CurrentFrame
end
local data = args.data and mw.loadData( 'Module:' .. args.data ) or {}
local categories = {}
local idData = args.iddata
if not idData then
local name = args.name or data.settings.name
local id = mw.text.trim( tostring( args[1] or '' ) )
idData = data.ids[id] or data.ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )]
end
local title = mw.title.getCurrentTitle()
-- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces
local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' )
if idData then
if idData.deprecated then
args.class = ( args.class or '' ) .. ' sprite-deprecated'
end
args.pos = idData.pos
elseif not disallowCats then
categories[#categories + 1] = f:expandTemplate{ title = 'Translation category', args = { 'Pages with missing sprites', project = 0 } }
end
return p.base( args ), table.concat( categories )
end
function p.link( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
end
local link = args[1]
if args[1] and not args.id then
link = args[1]:match( '^(.-)%+' ) or args[1]
end
local text
if not args.notext then
text = args.text or args[2] or link
end
args[1] = args.id or args[1]
args.link = args.link or link
args.text = text
return p.sprite( args )
end
function p.getUrl( image, query, classname )
local f = CurrentFrame
local t = {
url = f:expandTemplate{
title = 'FileUrl',
args = { image, query = query }
},
}
if classname and classname ~= '' then
t.style = f:expandTemplate{
title = 'FileUrlStyle',
args = { classname, image, query = query }
}
end
return t
end
function p.getParsedUrlStyle( f )
local args = f:getParent().args
local module = args[1]
return require( 'Module:' .. module ).settings.url.style
end
function p.doc( f )
local args = f
if f == CurrentFrame then
args = f.args
else
f = CurrentFrame
end
local dataPage = mw.text.trim( args[1] )
local data = mw.loadData( 'Module:' .. dataPage )
local getProtection = function( title, action, extra )
local protections = { 'edit' }
if extra then
protections[#protections + 1] = extra
end
local addProtection = function( protection )
if protection == 'autoconfirmed' then
protection = 'editsemiprotected'
elseif protection == 'sysop' then
protection = 'editprotected'
end
protections[#protections + 1] = protection
end
local direct = title.protectionLevels[action] or {}
for _, protection in ipairs( direct ) do
addProtection( protection )
end
local cascading = title.cascadingProtection.restrictions[action] or {}
if #cascading > 0 then
protections[#protections + 1] = 'protect'
end
for _, protection in ipairs( cascading ) do
addProtection( protection )
end
return table.concat( protections, ',' )
end
local spriteStyle = ''
if data.settings.url and data.settings.url.style then
spriteStyle = data.settings.url.style
end
local dataTitle = mw.title.new( 'Module:' .. dataPage )
-- Temporary until this is updated
local classname = ''
if data.settings.stylesheet then
classname = data.settings.classname or
mw.ustring.lower( data.settings.name:gsub( ' ', '-' ) ) .. '-sprite'
end
local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png'
local spriteTitle = mw.title.new( 'File:' .. spritesheet )
local dataProtection = getProtection( dataTitle, 'edit' )
local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' )
local body = mw.html.create( 'div' ):attr( {
id = 'spritedoc',
['data-dataprotection'] = dataProtection,
['data-datatimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', 'Module:' .. dataPage ),
['data-datapage'] = 'Module:' .. dataPage,
['data-spritesheet'] = spritesheet,
['data-spriteprotection'] = spriteProtection,
['data-urlfunc'] = "require( [[Module:Sprite]] ).getUrl( '" .. spritesheet .. "', '$1', '" .. classname .. "' )",
['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ),
['data-settings'] = mw.text.jsonEncode( data.settings ),
} )
local sections = {}
for _, sectionData in ipairs( data.sections or { name = 'Uncategorized' } ) do
local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id )
sectionTag:tag( 'h3' ):wikitext( sectionData.name )
sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) }
end
local keyedData = {}
local i = 1
for name, idData in pairs( data.ids ) do
keyedData[i] = {
sortKey = mw.ustring.lower( name ),
name = name,
data = idData
}
i = i + 1
end
table.sort( keyedData, function( a, b )
return a.sortKey < b.sortKey
end )
for _, data in ipairs( keyedData ) do
local idData = data.data
local pos = idData.pos
local section = sections[idData.section]
local names = section[pos]
if not names then
local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos )
box:tag( 'div' ):addClass( 'spritedoc-image' )
:wikitext( p.base{ pos = pos, data = dataPage, nourl = spriteStyle ~= '' } )
names = box:tag( 'ul' ):addClass( 'spritedoc-names' )
section[pos] = names
end
local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' )
local codeElem = nameElem:tag( 'code' ):wikitext( data.name )
if idData.deprecated then
codeElem:addClass( 'spritedoc-deprecated' )
end
names:wikitext( tostring( nameElem ) )
end
if args.refresh then
return '', '', tostring( body )
end
local styles = f:callParserFunction( '#widget:SpriteDoc.css' )
return styles, spriteStyle, tostring( body )
end
return p
46e1ae0179871cc773cbd2802cb46d2efa1b36e5
168
167
2024-05-07T22:21:27Z
Axxyyy
2
Scribunto
text/plain
local p = {}
local CurrentFrame = mw.getCurrentFrame()
function p.base( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = CurrentFrame
end
local data = args.data and mw.loadData( 'Module:' .. args.data ) or {}
local settings = data.settings
-- Default settings
local default = {
scale = 1,
sheetsize = 256,
size = 16,
pos = 1,
align = 'text-top'
}
local defaultStyle = default
if settings then
if not settings.stylesheet then
-- Make a separate clone of the current default settings
defaultStyle = mw.clone( default )
end
for k, v in pairs( settings ) do
default[k] = v
end
end
local setting = function( arg )
return args[arg] or default[arg]
end
local sprite = mw.html.create( 'span' ):addClass( 'sprite' )
-- mw.html's css method performs very slow escaping, which doubles the time it takes
-- to run, so we'll construct the styles manually, and put them in the cssText
-- method, which only does html escaping (which isn't slow)
local styles = {}
if not setting( 'nourl' ) and setting( 'url' ) then
styles[#styles + 1] = 'background-image:' .. ( setting( 'url' ).url or setting( 'url' ) )
end
if setting( 'stylesheet' ) then
sprite:addClass(
setting( 'classname' ) or
mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite'
)
elseif not setting( 'url' ) then
styles[#styles + 1] = 'background-image:' .. p.getUrl(
setting( 'image' ) or setting( 'name' ) .. 'Sprite.png'
).url
end
local class = setting( 'class' )
if class then
sprite:addClass( class )
end
local width = setting( 'width' ) or setting( 'size' )
local height = setting( 'height' ) or setting( 'size' )
local sheetWidth = setting( 'sheetsize' )
local tiles = sheetWidth / width
local pos = setting( 'pos' ) - 1
local scale = setting( 'scale' )
local autoScale = setting( 'autoscale' )
if pos then
local left = pos % tiles * width * scale
local top = math.floor( pos / tiles ) * height * scale
styles[#styles + 1] = 'background-position:-' .. left .. 'px -' .. top .. 'px'
end
if not autoScale and scale ~= defaultStyle.scale then
styles[#styles + 1] = 'background-size:' .. sheetWidth * scale .. 'px auto'
end
if height ~= defaultStyle.size or width ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then
styles[#styles + 1] = 'height:' .. height * scale .. 'px'
styles[#styles + 1] = 'width:' .. width * scale .. 'px'
end
local align = setting( 'align' )
if align ~= defaultStyle.align then
styles[#styles + 1] = 'vertical-align:' .. align
end
styles[#styles + 1] = setting( 'css' )
sprite:cssText( table.concat( styles, ';' ) )
local text = setting( 'text' )
local root
local spriteText
if text then
if not args['wrap'] then
root = mw.html.create( 'span' ):addClass( 'nowrap' )
end
spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text )
end
local title = setting( 'title' )
if title then
( root or sprite ):attr( 'title', title )
end
if not root then
root = mw.html.create( '' )
end
root:node( sprite )
if spriteText then
root:node( spriteText )
end
local link = setting( 'link' ) or ''
if link ~= '' and mw.ustring.lower( link ) ~= 'none' then
-- External link
if link:find( '//' ) then
return '[' .. link .. ' ' .. tostring( root ) .. ']'
end
-- Internal link
local linkPrefix = setting( 'linkprefix' ) or ''
return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]'
end
return tostring( root )
end
function p.sprite( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = CurrentFrame
end
local data = args.data and mw.loadData( 'Module:' .. args.data ) or {}
local categories = {}
local idData = args.iddata
if not idData then
local name = args.name or data.settings.name
local id = mw.text.trim( tostring( args[1] or '' ) )
idData = data.ids[id] or data.ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )]
end
local title = mw.title.getCurrentTitle()
-- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces
local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' )
if idData then
if idData.deprecated then
args.class = ( args.class or '' ) .. ' sprite-deprecated'
end
args.pos = idData.pos
end
return p.base( args ), table.concat( categories )
end
function p.link( f )
local args = f
if f == CurrentFrame then
args = require( 'Module:ProcessArgs' ).merge( true )
end
local link = args[1]
if args[1] and not args.id then
link = args[1]:match( '^(.-)%+' ) or args[1]
end
local text
if not args.notext then
text = args.text or args[2] or link
end
args[1] = args.id or args[1]
args.link = args.link or link
args.text = text
return p.sprite( args )
end
function p.getUrl( image, query, classname )
local f = CurrentFrame
local t = {
url = f:expandTemplate{
title = 'FileUrl',
args = { image, query = query }
},
}
if classname and classname ~= '' then
t.style = f:expandTemplate{
title = 'FileUrlStyle',
args = { classname, image, query = query }
}
end
return t
end
function p.getParsedUrlStyle( f )
local args = f:getParent().args
local module = args[1]
return require( 'Module:' .. module ).settings.url.style
end
function p.doc( f )
local args = f
if f == CurrentFrame then
args = f.args
else
f = CurrentFrame
end
local dataPage = mw.text.trim( args[1] )
local data = mw.loadData( 'Module:' .. dataPage )
local getProtection = function( title, action, extra )
local protections = { 'edit' }
if extra then
protections[#protections + 1] = extra
end
local addProtection = function( protection )
if protection == 'autoconfirmed' then
protection = 'editsemiprotected'
elseif protection == 'sysop' then
protection = 'editprotected'
end
protections[#protections + 1] = protection
end
local direct = title.protectionLevels[action] or {}
for _, protection in ipairs( direct ) do
addProtection( protection )
end
local cascading = title.cascadingProtection.restrictions[action] or {}
if #cascading > 0 then
protections[#protections + 1] = 'protect'
end
for _, protection in ipairs( cascading ) do
addProtection( protection )
end
return table.concat( protections, ',' )
end
local spriteStyle = ''
if data.settings.url and data.settings.url.style then
spriteStyle = data.settings.url.style
end
local dataTitle = mw.title.new( 'Module:' .. dataPage )
-- Temporary until this is updated
local classname = ''
if data.settings.stylesheet then
classname = data.settings.classname or
mw.ustring.lower( data.settings.name:gsub( ' ', '-' ) ) .. '-sprite'
end
local spritesheet = data.settings.image or data.settings.name .. 'Sprite.png'
local spriteTitle = mw.title.new( 'File:' .. spritesheet )
local dataProtection = getProtection( dataTitle, 'edit' )
local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' )
local body = mw.html.create( 'div' ):attr( {
id = 'spritedoc',
['data-dataprotection'] = dataProtection,
['data-datatimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', 'Module:' .. dataPage ),
['data-datapage'] = 'Module:' .. dataPage,
['data-spritesheet'] = spritesheet,
['data-spriteprotection'] = spriteProtection,
['data-urlfunc'] = "require( [[Module:Sprite]] ).getUrl( '" .. spritesheet .. "', '$1', '" .. classname .. "' )",
['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. dataPage .. '|refresh=1}}' ),
['data-settings'] = mw.text.jsonEncode( data.settings ),
} )
local sections = {}
for _, sectionData in ipairs( data.sections or { name = 'Uncategorized' } ) do
local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id )
sectionTag:tag( 'h3' ):wikitext( sectionData.name )
sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) }
end
local keyedData = {}
local i = 1
for name, idData in pairs( data.ids ) do
keyedData[i] = {
sortKey = mw.ustring.lower( name ),
name = name,
data = idData
}
i = i + 1
end
table.sort( keyedData, function( a, b )
return a.sortKey < b.sortKey
end )
for _, data in ipairs( keyedData ) do
local idData = data.data
local pos = idData.pos
local section = sections[idData.section]
local names = section[pos]
if not names then
local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos )
box:tag( 'div' ):addClass( 'spritedoc-image' )
:wikitext( p.base{ pos = pos, data = dataPage, nourl = spriteStyle ~= '' } )
names = box:tag( 'ul' ):addClass( 'spritedoc-names' )
section[pos] = names
end
local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' )
local codeElem = nameElem:tag( 'code' ):wikitext( data.name )
if idData.deprecated then
codeElem:addClass( 'spritedoc-deprecated' )
end
names:wikitext( tostring( nameElem ) )
end
if args.refresh then
return '', '', tostring( body )
end
local styles = f:callParserFunction( '#widget:SpriteDoc.css' )
return styles, spriteStyle, tostring( body )
end
return p
0c81e9d716f88d3227c4ed3d9ba80f0f98c36e0b
169
168
2024-05-07T22:24:53Z
Axxyyy
2
Scribunto
text/plain
local p = {}
function p.base( f )
local args = f
if f == mw.getCurrentFrame() then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = mw.getCurrentFrame()
end
-- Default settings
local default = {
scale = 1,
sheetsize = 256,
size = 16,
pos = 1,
align = 'text-top'
}
local defaultStyle = default
if args.settings then
local settings = mw.loadData( 'Module:' .. args.settings )
if not settings.stylesheet then
-- Make a separate clone of the current default settings
defaultStyle = mw.clone( default )
end
for k, v in pairs( settings ) do
default[k] = v
end
end
local setting = function( arg )
return args[arg] or default[arg]
end
local sprite = mw.html.create( 'span' ):addClass( 'sprite' )
sprite:tag( 'br' )
-- mw.html's css method performs very slow escaping, which doubles the time it takes
-- to run, so we'll construct the styles manually, and put them in the cssText
-- method, which only does html escaping (which isn't slow)
local styles = {}
if setting( 'stylesheet' ) then
sprite:addClass(
setting( 'classname' ) or
mw.ustring.lower( setting( 'name' ):gsub( ' ', '-' ) ) .. '-sprite'
)
else
table.insert( styles, 'background-image:{{FileUrl|' .. (
setting( 'image' ) or setting( 'name' ) .. 'Sprite.png'
) .. '}}' )
end
local class = setting( 'class' )
if class then
sprite:addClass( class )
end
local size = setting( 'size' )
local pos = math.abs( setting( 'pos' ) ) - 1
local sheetWidth = setting( 'sheetsize' )
local tiles = sheetWidth / size
local left = pos % tiles * size
local top = math.floor( pos / tiles ) * size
local scale = setting( 'scale' )
local autoScale = setting( 'autoscale' )
if left > 0 or top > 0 then
table.insert( styles, 'background-position:-' .. left * scale .. 'px -' .. top * scale .. 'px' )
end
if not autoScale and scale ~= defaultStyle.scale then
table.insert( styles, 'background-size:' .. sheetWidth * scale .. 'px auto' )
end
if size ~= defaultStyle.size or ( not autoScale and scale ~= defaultStyle.scale ) then
table.insert( styles, 'height:' .. size * scale .. 'px' )
table.insert( styles, 'width:' .. size * scale .. 'px' )
end
local align = setting( 'align' )
if align ~= defaultStyle.align then
table.insert( styles, 'vertical-align:' .. align )
end
table.insert( styles, setting( 'css' ) )
sprite:cssText( table.concat( styles, ';' ) )
local text = setting( 'text' )
local root
local spriteText
if text then
root = mw.html.create( 'span' ):addClass( 'nowrap' )
spriteText = mw.html.create( 'span' ):addClass( 'sprite-text' ):wikitext( text )
end
local title = setting( 'title' )
if title then
( root or sprite ):attr( 'title', title )
end
if not root then
root = mw.html.create( '' )
end
root:node( sprite )
if spriteText then
root:node( spriteText )
end
local link = setting( 'link' ) or ''
if link ~= '' and mw.ustring.lower( link ) ~= 'none' then
-- External link
if link:find( '//' ) then
return '[' .. link .. ' ' .. tostring( root ) .. ']'
end
-- Internal link
local linkPrefix = setting( 'linkprefix' ) or ''
return '[[' .. linkPrefix .. link .. '|' .. tostring( root ) .. ']]'
end
return tostring( root )
end
function p.sprite( f )
local args = f
if f == mw.getCurrentFrame() then
args = require( 'Module:ProcessArgs' ).merge( true )
else
f = mw.getCurrentFrame()
end
local categories = {}
local idData = args.iddata
if not idData then
local default = {}
if args.settings then
default = mw.loadData( 'Module:' .. args.settings )
end
local name = args.name or default.name
local ids = mw.loadData( 'Module:' .. ( args.ids or default.ids or name .. '/IDs' ) )
ids = ids.ids or ids
local id = mw.text.trim( tostring( args[1] or '' ) )
idData = ids[id] or ids[mw.ustring.lower( id ):gsub( '[%s%+]', '-' )]
end
local title = mw.title.getCurrentTitle()
-- Remove categories on language pages, talk pages, and in User/UserWiki/UserProfile namespaces
local disallowCats = args.nocat or title.isTalkPage or title.nsText:find( '^User' )
if idData then
if type( idData ) == 'table' then
if idData.deprecated and not disallowCats then
table.insert( categories, f:expandTemplate{ title = 'Translation category', args = { 'Pages using deprecated sprite names', project = 0 } } )
end
args.pos = idData.pos
else
args.pos = idData
end
elseif not disallowCats then
table.insert( categories, f:expandTemplate{ title = 'Translation category', args = { 'Pages with missing sprites', project = 0 } } )
end
return p.base( args ), table.concat( categories, '' )
end
function p.link( f )
local args = f
if f == mw.getCurrentFrame() then
args = require( 'Module:ProcessArgs' ).merge( true )
end
local link = args[1]
if args[1] and not args.id then
link = args[1]:match( '^(.-)%+' ) or args[1]
end
local text = args.text or args[2] or link
args[1] = args.id or args[1]
args.link = args.link or link
args.text = text
return p.sprite( args )
end
function p.doc( f )
local args = f
if f == mw.getCurrentFrame() then
args = f.args
else
f = mw.getCurrentFrame()
end
local settingsPage = mw.text.trim( args[1] )
local settings = mw.loadData( 'Module:' .. settingsPage )
local idsPage = 'Module:' .. ( settings.ids or settings.name .. '/IDs' )
local getProtection = function( title, action, extra )
local protections = { 'edit' }
if extra then
table.insert( protections, extra )
end
local addProtection = function( protection )
if protection == 'autoconfirmed' then
protection = 'editsemiprotected'
elseif protection == 'sysop' then
protection = 'editprotected'
end
table.insert( protections, protection )
end
local direct = title.protectionLevels[action]
for _, protection in ipairs( direct ) do
addProtection( protection )
end
local cascading = title.cascadingProtection.restrictions[action] or {}
if #cascading > 0 then
table.insert( protections, 'protect' )
end
for _, protection in ipairs( cascading ) do
addProtection( protection )
end
return table.concat( protections, ',' )
end
local body
if args.refresh then
body = mw.html.create( '' )
else
local idsTitle = mw.title.new( idsPage )
local spritesheet = settings.image or settings.name .. 'Sprite.png'
local spriteTitle = mw.title.new( 'File:' .. spritesheet )
local idsProtection = getProtection( idsTitle, 'edit' )
local spriteProtection = getProtection( spriteTitle, 'upload', 'upload,reupload' )
body = mw.html.create( 'div' ):attr( {
id = 'spritedoc',
['data-idspage'] = idsTitle.id,
['data-idsprotection'] = idsProtection,
['data-idstimestamp'] = f:callParserFunction( 'REVISIONTIMESTAMP', idsPage ),
['data-spritesheet'] = spritesheet,
['data-spriteprotection'] = spriteProtection,
['data-pos'] = settings.pos or 1,
['data-refreshtext'] = mw.text.nowiki( '{{#invoke:sprite|doc|' .. settingsPage .. '|refresh=1}}' )
} )
end
local data = mw.loadData( idsPage )
local sections = {}
for _, sectionData in ipairs( data.sections or { 'Uncategorized' } ) do
local sectionTag = body:tag( 'div' ):addClass( 'spritedoc-section' ):attr( 'data-section-id', sectionData.id )
-- https://phabricator.wikimedia.org/T73594
sectionTag:wikitext( '<h3>', sectionData[1], '</h3>' )
sections[sectionData.id] = { boxes = sectionTag:tag( 'ul' ):addClass( 'spritedoc-boxes' ) }
end
local keyedData = {}
for name, idData in pairs( data.ids ) do
table.insert( keyedData, {
sortKey = mw.ustring.lower( name ),
name = name,
data = idData
} )
end
table.sort( keyedData, function( a, b )
return a.sortKey < b.sortKey
end )
for _, data in ipairs( keyedData ) do
local idData = data.data
local pos = idData.pos
local section = sections[idData.section]
local names = section[pos]
if not names then
local box = section.boxes:tag( 'li' ):addClass( 'spritedoc-box' ):attr( 'data-pos', pos )
box:tag( 'div' ):addClass( 'spritedoc-image' )
:wikitext( p.base{ pos = pos, settings = settingsPage } )
names = box:tag( 'ul' ):addClass( 'spritedoc-names' )
section[pos] = names
end
local nameElem = mw.html.create( 'li' ):addClass( 'spritedoc-name' )
local codeElem = nameElem:tag( 'code' ):wikitext( data.name )
if idData.deprecated then
codeElem:addClass( 'spritedoc-deprecated' )
end
names:wikitext( tostring( nameElem ) )
end
if args.refresh then
return '', tostring( body )
end
return f:callParserFunction( '#widget:Stylesheet', { page = 'SpriteDoc' } ), tostring( body )
end
return p
6b0633b79466a07e3085e5925e5032656c410b73
Module:InvSprite
828
109
171
2024-05-07T22:32:13Z
Axxyyy
2
Created page with "return { settings = { align = 'middle', classname = 'inv-sprite', image = 'InvSprite.png', sheetsize = 1024, size = 32, stylesheet = true, url = require( [[Module:Sprite]] ).getUrl( 'InvSprite.png', '', 'inv-sprite' ), }, sections = { { name = 'Armor', id = 1 }, { name = 'Banner', id = 2 }, { name = 'Brewing ingredient', id = 3 }, { name = 'Bucket', id = 4 }, { name = 'Decoration', id = 5 }, { name = 'Dye', id = 6 }, { name = 'Dyed', id = 7..."
Scribunto
text/plain
return {
settings = {
align = 'middle',
classname = 'inv-sprite',
image = 'InvSprite.png',
sheetsize = 1024,
size = 32,
stylesheet = true,
url = require( [[Module:Sprite]] ).getUrl( 'InvSprite.png', '', 'inv-sprite' ),
},
sections = {
{ name = 'Armor', id = 1 },
{ name = 'Banner', id = 2 },
{ name = 'Brewing ingredient', id = 3 },
{ name = 'Bucket', id = 4 },
{ name = 'Decoration', id = 5 },
{ name = 'Dye', id = 6 },
{ name = 'Dyed', id = 7 },
{ name = 'End', id = 8 },
{ name = 'Firework', id = 9 },
{ name = 'Food', id = 10 },
{ name = 'Liquid', id = 11 },
{ name = 'Manufactured', id = 12 },
{ name = 'Mechanism', id = 13 },
{ name = 'Mob head', id = 14 },
{ name = 'Natural', id = 15 },
{ name = 'Nether', id = 16 },
{ name = 'Non-solid', id = 17 },
{ name = 'Ore', id = 18 },
{ name = 'Plant', id = 19 },
{ name = 'Smithing Template', id = 41 },
{ name = 'Pottery Sherd', id = 44 },
{ name = 'Bedrock Edition & Education Edition', id = 20 },
{ name = 'Chemistry Miscellaneous', id = 33 },
{ name = 'Element', id = 34 },
{ name = 'Beaker', id = 35 },
{ name = 'Flask', id = 36 },
{ name = 'Jar', id = 37 },
{ name = 'Potion', id = 21 },
{ name = 'Splash potion', id = 22 },
{ name = 'Lingering potion', id = 31 },
{ name = 'Raw material', id = 23 },
{ name = 'Spawn egg', id = 24 },
{ name = 'Tool', id = 25 },
{ name = 'Trimmed Armor', id = 43 },
{ name = 'Utility', id = 26 },
{ name = 'Vehicle', id = 27 },
{ name = 'Weapon', id = 28 },
{ name = 'Legacy: Potion', id = 45 },
{ name = 'Legacy: Lingering Potion', id = 46 },
{ name = 'Legacy: Splash Potion', id = 47 },
{ name = 'Legacy: Spawn Eggs', id = 39 },
{ name = 'Legacy: Dyed', id = 40 },
{ name = 'Legacy: before 15w31a stair flip', id = 42 },
{ name = 'Legacy: Miscellaneous', id = 29 },
{ name = 'April Fools', id = 32 },
{ name = 'Other', id = 30 },
{ name = 'Minecraft Earth', id = 38 },
},
ids = {
['3D'] = { pos = 446, section = 32 },
['???'] = { pos = 1770, section = 34 },
['A Very Fine Item'] = { pos = 263, section = 32 },
['Acacia Boat'] = { pos = 637, section = 27 },
['Acacia Boat Revision 2'] = { pos = 3618, section = 29 },
['Acacia Boat with Chest'] = { pos = 610, section = 27 },
['Acacia Button'] = { pos = 3326, section = 13 },
['Acacia Door'] = { pos = 566, section = 13 },
['Acacia Door Revision 3'] = { pos = 935, section = 13 },
['Acacia Fence'] = { pos = 645, section = 12 },
['Acacia Fence BE'] = { pos = 3222, section = 12 },
['Acacia Fence Gate'] = { pos = 3221, section = 13 },
['Acacia Fence Gate BE'] = { pos = 52, section = 13 },
['Acacia Hanging Sign'] = { pos = 261, section = 5 },
['Acacia Leaves'] = { pos = 3398, section = 19 },
['Acacia Log'] = { pos = 3399, section = 19 },
['Acacia Planks'] = { pos = 854, section = 12 },
['Acacia Pressure Plate'] = { pos = 3327, section = 13 },
['Acacia Sapling'] = { pos = 3400, section = 19 },
['Acacia Sign'] = { pos = 2396, section = 17 },
['Acacia Slab'] = { pos = 3223, section = 12 },
['Acacia Stairs'] = { pos = 3224, section = 12 },
['Acacia Trapdoor'] = { pos = 1650, section = 13 },
['Acacia Wood'] = { pos = 3225, section = 12 },
['Acacia Wood Button'] = { pos = 3326, section = 13 },
['Acacia Wood Door'] = { pos = 566, section = 13 },
['Acacia Wood Fence'] = { pos = 645, section = 12 },
['Acacia Wood Fence Gate'] = { pos = 3221, section = 13 },
['Acacia Wood Planks'] = { pos = 854, section = 12 },
['Acacia Wood Pressure Plate'] = { pos = 3327, section = 13 },
['Acacia Wood Sign'] = { pos = 2396, section = 17 },
['Acacia Wood Slab'] = { pos = 3223, section = 12 },
['Acacia Wood Stairs'] = { pos = 3224, section = 12 },
['Acacia Wood Trapdoor'] = { pos = 1650, section = 13 },
Actinide = { pos = 66, section = 34 },
Actinium = { pos = 1771, section = 34 },
['Activator Rail'] = { pos = 3328, section = 13 },
['Adult Carrots'] = { pos = 2138, section = 19 },
['Adult Nether Warts'] = { pos = 2170, section = 16 },
['Adult Potatoes'] = { pos = 2142, section = 19 },
['Adult Wheat Crops'] = { pos = 2144, section = 19 },
Air = { pos = 2363, section = 15 },
['Alkali metal'] = { pos = 67, section = 34 },
['Alkaline earth metal'] = { pos = 68, section = 34 },
['Allay Spawn Egg'] = { pos = 901, section = 24 },
Allium = { pos = 3401, section = 19 },
Allow = { pos = 1435, section = 20 },
Aluminium = { pos = 1772, section = 34 },
Aluminum = { pos = 1772, section = 34 },
['Aluminum Oxide'] = { pos = 1918, section = 37 },
Americium = { pos = 1773, section = 34 },
['Amethyst Cluster'] = { pos = 393, section = 15 },
['Amethyst Shard'] = { pos = 394, section = 23 },
['Amethyst Trim Chainmail Boots'] = { pos = 829, section = 43 },
['Amethyst Trim Chainmail Chestplate'] = { pos = 830, section = 43 },
['Amethyst Trim Chainmail Helmet'] = { pos = 832, section = 43 },
['Amethyst Trim Chainmail Leggings'] = { pos = 833, section = 43 },
['Amethyst Trim Diamond Boots'] = { pos = 834, section = 43 },
['Amethyst Trim Diamond Chestplate'] = { pos = 835, section = 43 },
['Amethyst Trim Diamond Helmet'] = { pos = 836, section = 43 },
['Amethyst Trim Diamond Leggings'] = { pos = 838, section = 43 },
['Amethyst Trim Golden Boots'] = { pos = 839, section = 43 },
['Amethyst Trim Golden Chestplate'] = { pos = 840, section = 43 },
['Amethyst Trim Golden Helmet'] = { pos = 841, section = 43 },
['Amethyst Trim Golden Leggings'] = { pos = 843, section = 43 },
['Amethyst Trim Iron Boots'] = { pos = 844, section = 43 },
['Amethyst Trim Iron Chestplate'] = { pos = 845, section = 43 },
['Amethyst Trim Iron Helmet'] = { pos = 847, section = 43 },
['Amethyst Trim Iron Leggings'] = { pos = 849, section = 43 },
['Amethyst Trim Leather Boots'] = { pos = 850, section = 43 },
['Amethyst Trim Leather Cap'] = { pos = 852, section = 43 },
['Amethyst Trim Leather Pants'] = { pos = 853, section = 43 },
['Amethyst Trim Leather Tunic'] = { pos = 855, section = 43 },
['Amethyst Trim Netherite Boots'] = { pos = 856, section = 43 },
['Amethyst Trim Netherite Chestplate'] = { pos = 857, section = 43 },
['Amethyst Trim Netherite Helmet'] = { pos = 858, section = 43 },
['Amethyst Trim Netherite Leggings'] = { pos = 860, section = 43 },
['Amethyst Trim Turtle Shell'] = { pos = 861, section = 43 },
Ammonia = { pos = 1889, section = 35 },
['Ancient Debris'] = { pos = 134, section = 16 },
Andesite = { pos = 3355, section = 15 },
['Andesite Slab'] = { pos = 3226, section = 12 },
['Andesite Stairs'] = { pos = 3227, section = 12 },
['Andesite Wall'] = { pos = 3228, section = 12 },
['Andesite Wall BE'] = { pos = 21, section = 12 },
['Angler Pottery Sherd'] = { pos = 1220, section = 44 },
['Ankle Monitor'] = { pos = 1637, section = 32 },
Ant = { pos = 264, section = 32 },
Antidote = { pos = 1744, section = 33 },
Antimony = { pos = 1774, section = 34 },
Anvil = { pos = 3594, section = 26 },
Apple = { pos = 3193, section = 10 },
['Apple Revision 1'] = { pos = 2034, section = 29 },
['Archer Pottery Sherd'] = { pos = 1201, section = 44 },
Argentum = { pos = 1775, section = 34 },
Argon = { pos = 1776, section = 34 },
['Armor Stand'] = { pos = 3150, section = 5 },
['Arms Up Pottery Sherd'] = { pos = 1202, section = 44 },
Arrow = { pos = 1267, section = 28 },
['Arrow 15w14a'] = { pos = 117, section = 32 },
['Arrow Loaded Crossbow'] = { pos = 2383, section = 28 },
['Arrow of Big'] = { pos = 1237, section = 32 },
['Arrow of Decay'] = { pos = 1408, section = 28 },
['Arrow of Decay Revision 1'] = { pos = 1562, section = 29 },
['Arrow of Fire Resistance'] = { pos = 1268, section = 28 },
['Arrow of Harming'] = { pos = 1269, section = 28 },
['Arrow of Healing'] = { pos = 1270, section = 28 },
['Arrow of Invisibility'] = { pos = 1271, section = 28 },
['Arrow of Leaping'] = { pos = 1272, section = 28 },
['Arrow of Luck'] = { pos = 1362, section = 28 },
['Arrow of Night Vision'] = { pos = 1273, section = 28 },
['Arrow of Poison'] = { pos = 1274, section = 28 },
['Arrow of Regeneration'] = { pos = 1275, section = 28 },
['Arrow of Slow Falling'] = { pos = 1734, section = 28 },
['Arrow of Slowness'] = { pos = 1276, section = 28 },
['Arrow of Small'] = { pos = 1238, section = 32 },
['Arrow of Splashing'] = { pos = 1266, section = 28 },
['Arrow of Strength'] = { pos = 1277, section = 28 },
['Arrow of Swiftness'] = { pos = 1278, section = 28 },
['Arrow of the Turtle Master'] = { pos = 2030, section = 28 },
['Arrow of Water Breathing'] = { pos = 133, section = 28 },
['Arrow of Weakness'] = { pos = 1279, section = 28 },
Arsenic = { pos = 1777, section = 34 },
Astatine = { pos = 1778, section = 34 },
Aurum = { pos = 1779, section = 34 },
['Awkward Lingering Potion'] = { pos = 1097, section = 31 },
['Awkward Potion'] = { pos = 1083, section = 21 },
['Awkward Potion Revision 1'] = { pos = 292, section = 45 },
['Awkward Splash Potion'] = { pos = 1100, section = 22 },
['Axolotl Spawn Egg'] = { pos = 440, section = 24 },
Azalea = { pos = 464, section = 19 },
['Azalea Leaves'] = { pos = 465, section = 19 },
['Azure Bluet'] = { pos = 3402, section = 19 },
['Baked Potato'] = { pos = 3194, section = 10 },
['Baked Potato Revision 1'] = { pos = 2069, section = 29 },
Bamboo = { pos = 2373, section = 19 },
['Bamboo Button'] = { pos = 670, section = 13 },
['Bamboo Door'] = { pos = 671, section = 13 },
['Bamboo Fence'] = { pos = 662, section = 12 },
['Bamboo Fence Gate'] = { pos = 672, section = 13 },
['Bamboo Hanging Sign'] = { pos = 650, section = 5 },
['Bamboo Mosaic'] = { pos = 664, section = 12 },
['Bamboo Mosaic Slab'] = { pos = 665, section = 12 },
['Bamboo Mosaic Stairs'] = { pos = 666, section = 12 },
['Bamboo Planks'] = { pos = 667, section = 12 },
['Bamboo Pressure Plate'] = { pos = 674, section = 13 },
['Bamboo Raft'] = { pos = 690, section = 27 },
['Bamboo Raft BE'] = { pos = 693, section = 27 },
['Bamboo Raft with Chest'] = { pos = 691, section = 27 },
['Bamboo Raft with Chest BE'] = { pos = 694, section = 27 },
['Bamboo Sign'] = { pos = 680, section = 17 },
['Bamboo Slab'] = { pos = 668, section = 12 },
['Bamboo Stairs'] = { pos = 669, section = 12 },
['Bamboo Trapdoor'] = { pos = 679, section = 13 },
['Bamboo Wood Button'] = { pos = 670, section = 13 },
['Bamboo Wood Door'] = { pos = 671, section = 13 },
['Bamboo Wood Fence'] = { pos = 662, section = 12 },
['Bamboo Wood Fence Gate'] = { pos = 672, section = 13 },
['Bamboo Wood Planks'] = { pos = 667, section = 12 },
['Bamboo Wood Pressure Plate'] = { pos = 674, section = 13 },
['Bamboo Wood Sign'] = { pos = 680, section = 17 },
['Bamboo Wood Slab'] = { pos = 668, section = 12 },
['Bamboo Wood Stairs'] = { pos = 669, section = 12 },
['Bamboo Wood Trapdoor'] = { pos = 679, section = 13 },
Banner = { pos = 788, section = 7 },
['Banner Pattern'] = { pos = 2391, section = 2 },
['Banner Revision 1'] = { pos = 2042, section = 29 },
Barium = { pos = 1780, section = 34 },
['Barium Sulfate'] = { pos = 1915, section = 37 },
Barrel = { pos = 2435, section = 26 },
Barrier = { pos = 3595, section = 26 },
Basalt = { pos = 148, section = 16 },
['Bat Spawn Egg'] = { pos = 1142, section = 24 },
Beacon = { pos = 3596, section = 26 },
['Beacon BE'] = { pos = 212, section = 26 },
Beaker = { pos = 1889, section = 35 },
Bedrock = { pos = 971, section = 15 },
['Bee Nest'] = { pos = 64, section = 15 },
['Bee Spawn Egg'] = { pos = 104, section = 24 },
['Bee Spawn Egg Revision 1'] = { pos = 65, section = 39 },
Beehive = { pos = 63, section = 12 },
Beetroot = { pos = 3196, section = 10 },
['Beetroot Seeds'] = { pos = 3403, section = 19 },
['Beetroot Soup'] = { pos = 3195, section = 10 },
Beetroots = { pos = 2145, section = 19 },
Bell = { pos = 2409, section = 5 },
Benzene = { pos = 1890, section = 35 },
Berkelium = { pos = 1781, section = 34 },
Beryllium = { pos = 1782, section = 34 },
['Big Dripleaf'] = { pos = 466, section = 19 },
['Birch Boat'] = { pos = 635, section = 27 },
['Birch Boat Revision 2'] = { pos = 3619, section = 29 },
['Birch Boat with Chest'] = { pos = 611, section = 27 },
['Birch Button'] = { pos = 3329, section = 13 },
['Birch Door'] = { pos = 567, section = 13 },
['Birch Door Revision 3'] = { pos = 937, section = 13 },
['Birch Fence'] = { pos = 643, section = 12 },
['Birch Fence BE'] = { pos = 3230, section = 12 },
['Birch Fence Gate'] = { pos = 3229, section = 13 },
['Birch Fence Gate BE'] = { pos = 53, section = 13 },
['Birch Hanging Sign'] = { pos = 651, section = 5 },
['Birch Leaves'] = { pos = 3404, section = 19 },
['Birch Log'] = { pos = 3405, section = 19 },
['Birch Log Revision 1'] = { pos = 2238, section = 29 },
['Birch Planks'] = { pos = 859, section = 12 },
['Birch Pressure Plate'] = { pos = 3330, section = 13 },
['Birch Sapling'] = { pos = 3406, section = 19 },
['Birch Sign'] = { pos = 2393, section = 17 },
['Birch Slab'] = { pos = 3231, section = 12 },
['Birch Stairs'] = { pos = 3232, section = 12 },
['Birch Stairs Left'] = { pos = 2256, section = 42 },
['Birch Trapdoor'] = { pos = 1648, section = 13 },
['Birch Wood'] = { pos = 3233, section = 12 },
['Birch Wood Button'] = { pos = 3329, section = 13 },
['Birch Wood Door'] = { pos = 567, section = 13 },
['Birch Wood Fence'] = { pos = 643, section = 12 },
['Birch Wood Fence Gate'] = { pos = 3229, section = 13 },
['Birch Wood Planks'] = { pos = 859, section = 12 },
['Birch Wood Pressure Plate'] = { pos = 3330, section = 13 },
['Birch Wood Sign'] = { pos = 2393, section = 17 },
['Birch Wood Slab'] = { pos = 3231, section = 12 },
['Birch Wood Stairs'] = { pos = 3232, section = 12 },
['Birch Wood Trapdoor'] = { pos = 1648, section = 13 },
Bismuth = { pos = 1783, section = 34 },
Bit = { pos = 1241, section = 32 },
['Black Balloon'] = { pos = 1928, section = 33 },
['Black Banner'] = { pos = 704, section = 7 },
['Black Banner 15w14a'] = { pos = 472, section = 32 },
['Black Base Banner'] = { pos = 2530, section = 2 },
['Black Base Dexter Canton Banner'] = { pos = 2531, section = 2 },
['Black Base Gradient Banner'] = { pos = 2532, section = 2 },
['Black Base Indented Banner'] = { pos = 2533, section = 2 },
['Black Base Sinister Canton Banner'] = { pos = 2534, section = 2 },
['Black Beaker'] = { pos = 1891, section = 35 },
['Black Bed'] = { pos = 3171, section = 7 },
['Black Bed BE'] = { pos = 1235, section = 7 },
['Black Bed LCE'] = { pos = 1235, section = 7 },
['Black Bend Banner'] = { pos = 2535, section = 2 },
['Black Bend Sinister Banner'] = { pos = 2536, section = 2 },
['Black Bordure Banner'] = { pos = 2537, section = 2 },
['Black Bordure Indented Banner'] = { pos = 2538, section = 2 },
['Black Candle'] = { pos = 395, section = 7 },
['Black Carpet'] = { pos = 1621, section = 7 },
['Black Carpet Revision 1'] = { pos = 705, section = 40 },
['Black Chevron Banner'] = { pos = 2539, section = 2 },
['Black Chief Banner'] = { pos = 2540, section = 2 },
['Black Chief Dexter Canton Banner'] = { pos = 2541, section = 2 },
['Black Chief Indented Banner'] = { pos = 2542, section = 2 },
['Black Chief Sinister Canton Banner'] = { pos = 2543, section = 2 },
['Black Concrete'] = { pos = 1475, section = 7 },
['Black Concrete Powder'] = { pos = 1476, section = 7 },
['Black Creeper Charge Banner'] = { pos = 2544, section = 2 },
['Black Cross Banner'] = { pos = 2545, section = 2 },
['Black Dye'] = { pos = 2375, section = 6 },
['Black Fess Banner'] = { pos = 2546, section = 2 },
['Black Field Masoned Banner'] = { pos = 2547, section = 2 },
['Black Firework Star'] = { pos = 804, section = 9 },
['Black Flask'] = { pos = 1902, section = 36 },
['Black Flower Charge Banner'] = { pos = 2548, section = 2 },
['Black Glazed Terracotta'] = { pos = 1477, section = 7 },
['Black Globe Banner'] = { pos = 35, section = 2 },
['Black Gradient Banner'] = { pos = 2549, section = 2 },
['Black Inverted Chevron Banner'] = { pos = 2550, section = 2 },
['Black Jar'] = { pos = 1916, section = 37 },
['Black Lozenge Banner'] = { pos = 2551, section = 2 },
['Black Pale Banner'] = { pos = 2552, section = 2 },
['Black Pale Dexter Banner'] = { pos = 2553, section = 2 },
['Black Pale Sinister Banner'] = { pos = 2554, section = 2 },
['Black Paly Banner'] = { pos = 2555, section = 2 },
['Black Per Bend Banner'] = { pos = 2556, section = 2 },
['Black Per Bend Inverted Banner'] = { pos = 2557, section = 2 },
['Black Per Bend Sinister Banner'] = { pos = 2558, section = 2 },
['Black Per Bend Sinister Inverted Banner'] = { pos = 2559, section = 2 },
['Black Per Fess Banner'] = { pos = 2560, section = 2 },
['Black Per Fess Inverted Banner'] = { pos = 2561, section = 2 },
['Black Per Pale Banner'] = { pos = 2562, section = 2 },
['Black Per Pale Inverted Banner'] = { pos = 2563, section = 2 },
['Black Piglin Banner'] = { pos = 359, section = 2 },
['Black Roundel Banner'] = { pos = 2564, section = 2 },
['Black Saltire Banner'] = { pos = 2565, section = 2 },
['Black Shield'] = { pos = 2469, section = 1 },
['Black Shulker Box'] = { pos = 1603, section = 7 },
['Black Shulker Box Revision 1'] = { pos = 1416, section = 40 },
['Black Skull Charge Banner'] = { pos = 2566, section = 2 },
['Black Snout Banner'] = { pos = 359, section = 2 },
['Black Stained Glass'] = { pos = 707, section = 7 },
['Black Stained Glass Pane'] = { pos = 708, section = 7 },
['Black Stained Glass Pane BE'] = { pos = 2008, section = 7 },
['Black Terracotta'] = { pos = 706, section = 7 },
['Black Thing Banner'] = { pos = 2567, section = 2 },
['Black Tinted Glass'] = { pos = 1294, section = 40 },
['Black Tinted Glass Pane'] = { pos = 3, section = 40 },
['Black Wood Planks'] = { pos = 244, section = 30 },
['Black Wool'] = { pos = 1523, section = 7 },
['Black Wool Revision 2'] = { pos = 709, section = 40 },
Blackstone = { pos = 260, section = 16 },
['Blackstone Slab'] = { pos = 276, section = 12 },
['Blackstone Stairs'] = { pos = 277, section = 12 },
['Blackstone Wall'] = { pos = 278, section = 12 },
['Blackstone Wall BE'] = { pos = 386, section = 12 },
['Blade Pottery Sherd'] = { pos = 1221, section = 44 },
['Blank Spawn Egg'] = { pos = 2361, section = 39 },
['Blast Furnace'] = { pos = 2442, section = 26 },
['Blaze Powder'] = { pos = 654, section = 3 },
['Blaze Rod'] = { pos = 655, section = 3 },
['Blaze Spawn Egg'] = { pos = 1143, section = 24 },
['Blaze Spawn Egg Revision 1'] = { pos = 1350, section = 39 },
Bleach = { pos = 1745, section = 33 },
['Bleach (filled)'] = { pos = 1746, section = 33 },
['Block of Amethyst'] = { pos = 396, section = 15 },
['Block of Bamboo'] = { pos = 699, section = 12 },
['Block of Coal'] = { pos = 3234, section = 12 },
['Block of Coal Revision 1'] = { pos = 1295, section = 29 },
['Block of Copper'] = { pos = 401, section = 12 },
['Block of Diamond'] = { pos = 3235, section = 12 },
['Block of Emerald'] = { pos = 3236, section = 12 },
['Block of Gold'] = { pos = 3237, section = 12 },
['Block of Iron'] = { pos = 3238, section = 12 },
['Block of Lapis Lazuli'] = { pos = 3273, section = 12 },
['Block of Netherite'] = { pos = 132, section = 12 },
['Block of Quartz'] = { pos = 3239, section = 12 },
['Block of Raw Copper'] = { pos = 545, section = 12 },
['Block of Raw Gold'] = { pos = 546, section = 12 },
['Block of Raw Iron'] = { pos = 547, section = 12 },
['Block of Redstone'] = { pos = 3331, section = 13 },
['Block of Stripped Bamboo'] = { pos = 700, section = 12 },
['Blue Balloon'] = { pos = 1929, section = 33 },
['Blue Banner'] = { pos = 710, section = 7 },
['Blue Banner 15w14a'] = { pos = 473, section = 32 },
['Blue Base Banner'] = { pos = 2568, section = 2 },
['Blue Base Dexter Canton Banner'] = { pos = 2569, section = 2 },
['Blue Base Gradient Banner'] = { pos = 2570, section = 2 },
['Blue Base Indented Banner'] = { pos = 2571, section = 2 },
['Blue Base Sinister Canton Banner'] = { pos = 2572, section = 2 },
['Blue Beaker'] = { pos = 1892, section = 35 },
['Blue Bed'] = { pos = 3172, section = 7 },
['Blue Bed BE'] = { pos = 1546, section = 7 },
['Blue Bed LCE'] = { pos = 1546, section = 7 },
['Blue Bend Banner'] = { pos = 2573, section = 2 },
['Blue Bend Sinister Banner'] = { pos = 2574, section = 2 },
['Blue Bordure Banner'] = { pos = 2575, section = 2 },
['Blue Bordure Indented Banner'] = { pos = 2576, section = 2 },
['Blue Candle'] = { pos = 397, section = 7 },
['Blue Carpet'] = { pos = 1622, section = 7 },
['Blue Carpet Revision 1'] = { pos = 711, section = 40 },
['Blue Chevron Banner'] = { pos = 2577, section = 2 },
['Blue Chief Banner'] = { pos = 2578, section = 2 },
['Blue Chief Dexter Canton Banner'] = { pos = 2579, section = 2 },
['Blue Chief Indented Banner'] = { pos = 2580, section = 2 },
['Blue Chief Sinister Canton Banner'] = { pos = 2581, section = 2 },
['Blue Concrete'] = { pos = 1478, section = 7 },
['Blue Concrete Powder'] = { pos = 1479, section = 7 },
['Blue Creeper Charge Banner'] = { pos = 2582, section = 2 },
['Blue Cross Banner'] = { pos = 2583, section = 2 },
['Blue Dye'] = { pos = 2376, section = 6 },
['Blue Fess Banner'] = { pos = 2584, section = 2 },
['Blue Field Masoned Banner'] = { pos = 2585, section = 2 },
['Blue Firework Star'] = { pos = 805, section = 9 },
['Blue Flask'] = { pos = 1903, section = 36 },
['Blue Flower Charge Banner'] = { pos = 2586, section = 2 },
['Blue Glazed Terracotta'] = { pos = 1480, section = 7 },
['Blue Globe Banner'] = { pos = 36, section = 2 },
['Blue Glow Stick'] = { pos = 1977, section = 33 },
['Blue Gradient Banner'] = { pos = 2587, section = 2 },
['Blue Ice'] = { pos = 1735, section = 15 },
['Blue Ice BE'] = { pos = 113, section = 15 },
['Blue Inverted Chevron Banner'] = { pos = 2588, section = 2 },
['Blue Jar'] = { pos = 1917, section = 37 },
['Blue Key'] = { pos = 451, section = 32 },
['Blue Lozenge Banner'] = { pos = 2589, section = 2 },
['Blue Orchid'] = { pos = 3407, section = 19 },
['Blue Pale Banner'] = { pos = 2590, section = 2 },
['Blue Pale Dexter Banner'] = { pos = 2591, section = 2 },
['Blue Pale Sinister Banner'] = { pos = 2592, section = 2 },
['Blue Paly Banner'] = { pos = 2593, section = 2 },
['Blue Per Bend Banner'] = { pos = 2594, section = 2 },
['Blue Per Bend Inverted Banner'] = { pos = 2595, section = 2 },
['Blue Per Bend Sinister Banner'] = { pos = 2596, section = 2 },
['Blue Per Bend Sinister Inverted Banner'] = { pos = 2597, section = 2 },
['Blue Per Fess Banner'] = { pos = 2598, section = 2 },
['Blue Per Fess Inverted Banner'] = { pos = 2599, section = 2 },
['Blue Per Pale Banner'] = { pos = 2600, section = 2 },
['Blue Per Pale Inverted Banner'] = { pos = 2601, section = 2 },
['Blue Piglin Banner'] = { pos = 360, section = 2 },
['Blue Roundel Banner'] = { pos = 2602, section = 2 },
['Blue Saltire Banner'] = { pos = 2603, section = 2 },
['Blue Shield'] = { pos = 2470, section = 1 },
['Blue Shulker Box'] = { pos = 1604, section = 7 },
['Blue Shulker Box Revision 1'] = { pos = 1417, section = 40 },
['Blue Skull Charge Banner'] = { pos = 2604, section = 2 },
['Blue Snout Banner'] = { pos = 360, section = 2 },
['Blue Sparkler'] = { pos = 1747, section = 33 },
['Blue Sparkler (active)'] = { pos = 1748, section = 33 },
['Blue Stained Glass'] = { pos = 713, section = 7 },
['Blue Stained Glass Pane'] = { pos = 714, section = 7 },
['Blue Stained Glass Pane BE'] = { pos = 2009, section = 7 },
['Blue Terracotta'] = { pos = 712, section = 7 },
['Blue Thing Banner'] = { pos = 2605, section = 2 },
['Blue Tinted Glass'] = { pos = 1296, section = 40 },
['Blue Tinted Glass Pane'] = { pos = 4, section = 40 },
['Blue Torch'] = { pos = 1749, section = 33 },
['Blue Wood Planks'] = { pos = 245, section = 30 },
['Blue Wool'] = { pos = 1524, section = 7 },
['Blue Wool Revision 2'] = { pos = 715, section = 40 },
Board = { pos = 1592, section = 20 },
Boat = { pos = 1259, section = 29 },
['Boat 15w14a'] = { pos = 621, section = 32 },
['Boat with Chest'] = { pos = 616, section = 27 },
Bohrium = { pos = 1784, section = 34 },
Bone = { pos = 3502, section = 23 },
['Bone Block'] = { pos = 3356, section = 15 },
['Bone Meal'] = { pos = 3155, section = 6 },
Book = { pos = 3503, section = 23 },
['Book and Quill'] = { pos = 3532, section = 25 },
Bookshelf = { pos = 3240, section = 12 },
Border = { pos = 1593, section = 20 },
Boron = { pos = 1785, section = 34 },
['Boron Trioxide'] = { pos = 1915, section = 37 },
["Bottle o' Enchanting"] = { pos = 3466, section = 22 },
['Bottle of Mob'] = { pos = 1243, section = 32 },
['Bottle of Void'] = { pos = 1301, section = 32 },
Bow = { pos = 1280, section = 28 },
['Bow BE'] = { pos = 1602, section = 28 },
Bowl = { pos = 3533, section = 25 },
['Box of Infinite Books'] = { pos = 265, section = 32 },
['Brain Coral'] = { pos = 1712, section = 15 },
['Brain Coral Block'] = { pos = 1707, section = 15 },
['Brain Coral Block Revision 1'] = { pos = 1702, section = 29 },
['Brain Coral Fan'] = { pos = 2132, section = 15 },
['Brain Coral Fan Revision 1'] = { pos = 1723, section = 29 },
['Brain Coral Fan Revision 2'] = { pos = 2136, section = 29 },
Bread = { pos = 3197, section = 10 },
['Bread Revision 1'] = { pos = 2035, section = 29 },
['Brewer Pottery Sherd'] = { pos = 1222, section = 44 },
['Brewing Stand'] = { pos = 3597, section = 26 },
Brick = { pos = 3504, section = 23 },
['Brick Slab'] = { pos = 3241, section = 12 },
['Brick Slab Old'] = { pos = 871, section = 12 },
['Brick Stairs'] = { pos = 3242, section = 12 },
['Brick Stairs Left'] = { pos = 2257, section = 42 },
['Brick Wall'] = { pos = 3243, section = 12 },
['Brick Wall BE'] = { pos = 22, section = 12 },
Bricks = { pos = 110, section = 12 },
['Bricks Old'] = { pos = 870, section = 12 },
['Broken Anvil'] = { pos = 448, section = 26 },
['Broken Elytra'] = { pos = 2471, section = 1 },
Bromine = { pos = 1786, section = 34 },
['Brown Balloon'] = { pos = 1930, section = 33 },
['Brown Banner'] = { pos = 716, section = 7 },
['Brown Banner 15w14a'] = { pos = 474, section = 32 },
['Brown Base Banner'] = { pos = 2606, section = 2 },
['Brown Base Dexter Canton Banner'] = { pos = 2607, section = 2 },
['Brown Base Gradient Banner'] = { pos = 2608, section = 2 },
['Brown Base Indented Banner'] = { pos = 2609, section = 2 },
['Brown Base Sinister Canton Banner'] = { pos = 2610, section = 2 },
['Brown Beaker'] = { pos = 1893, section = 35 },
['Brown Bed'] = { pos = 3173, section = 7 },
['Brown Bed BE'] = { pos = 1547, section = 7 },
['Brown Bed LCE'] = { pos = 1547, section = 7 },
['Brown Bend Banner'] = { pos = 2611, section = 2 },
['Brown Bend Sinister Banner'] = { pos = 2612, section = 2 },
['Brown Bordure Banner'] = { pos = 2613, section = 2 },
['Brown Bordure Indented Banner'] = { pos = 2614, section = 2 },
['Brown Candle'] = { pos = 398, section = 7 },
['Brown Carpet'] = { pos = 1623, section = 7 },
['Brown Carpet Revision 1'] = { pos = 717, section = 40 },
['Brown Chevron Banner'] = { pos = 2615, section = 2 },
['Brown Chief Banner'] = { pos = 2616, section = 2 },
['Brown Chief Dexter Canton Banner'] = { pos = 2617, section = 2 },
['Brown Chief Indented Banner'] = { pos = 2618, section = 2 },
['Brown Chief Sinister Canton Banner'] = { pos = 2619, section = 2 },
['Brown Concrete'] = { pos = 1481, section = 7 },
['Brown Concrete Powder'] = { pos = 1482, section = 7 },
['Brown Creeper Charge Banner'] = { pos = 2620, section = 2 },
['Brown Cross Banner'] = { pos = 2621, section = 2 },
['Brown Dye'] = { pos = 2377, section = 6 },
['Brown Fess Banner'] = { pos = 2622, section = 2 },
['Brown Field Masoned Banner'] = { pos = 2623, section = 2 },
['Brown Firework Star'] = { pos = 806, section = 9 },
['Brown Flask'] = { pos = 1904, section = 36 },
['Brown Flower Charge Banner'] = { pos = 2624, section = 2 },
['Brown Glazed Terracotta'] = { pos = 1483, section = 7 },
['Brown Globe Banner'] = { pos = 37, section = 2 },
['Brown Glow Stick'] = { pos = 1978, section = 33 },
['Brown Gradient Banner'] = { pos = 2625, section = 2 },
['Brown Inverted Chevron Banner'] = { pos = 2626, section = 2 },
['Brown Jar'] = { pos = 1918, section = 37 },
['Brown Lozenge Banner'] = { pos = 2627, section = 2 },
['Brown Mushroom'] = { pos = 3409, section = 19 },
['Brown Mushroom Block'] = { pos = 3408, section = 19 },
['Brown Pale Banner'] = { pos = 2628, section = 2 },
['Brown Pale Dexter Banner'] = { pos = 2629, section = 2 },
['Brown Pale Sinister Banner'] = { pos = 2630, section = 2 },
['Brown Paly Banner'] = { pos = 2631, section = 2 },
['Brown Per Bend Banner'] = { pos = 2632, section = 2 },
['Brown Per Bend Inverted Banner'] = { pos = 2633, section = 2 },
['Brown Per Bend Sinister Banner'] = { pos = 2634, section = 2 },
['Brown Per Bend Sinister Inverted Banner'] = { pos = 2635, section = 2 },
['Brown Per Fess Banner'] = { pos = 2636, section = 2 },
['Brown Per Fess Inverted Banner'] = { pos = 2637, section = 2 },
['Brown Per Pale Banner'] = { pos = 2638, section = 2 },
['Brown Per Pale Inverted Banner'] = { pos = 2639, section = 2 },
['Brown Piglin Banner'] = { pos = 361, section = 2 },
['Brown Roundel Banner'] = { pos = 2640, section = 2 },
['Brown Saltire Banner'] = { pos = 2641, section = 2 },
['Brown Shield'] = { pos = 2472, section = 1 },
['Brown Shulker Box'] = { pos = 1605, section = 7 },
['Brown Shulker Box Revision 1'] = { pos = 1418, section = 40 },
['Brown Skull Charge Banner'] = { pos = 2642, section = 2 },
['Brown Snout Banner'] = { pos = 361, section = 2 },
['Brown Stained Glass'] = { pos = 719, section = 7 },
['Brown Stained Glass Pane'] = { pos = 720, section = 7 },
['Brown Stained Glass Pane BE'] = { pos = 2010, section = 7 },
['Brown Terracotta'] = { pos = 718, section = 7 },
['Brown Thing Banner'] = { pos = 2643, section = 2 },
['Brown Tinted Glass'] = { pos = 1297, section = 40 },
['Brown Tinted Glass Pane'] = { pos = 5, section = 40 },
['Brown Wood Planks'] = { pos = 246, section = 30 },
['Brown Wool'] = { pos = 1525, section = 7 },
['Brown Wool Revision 2'] = { pos = 721, section = 40 },
Brush = { pos = 1206, section = 25 },
['Bubble Column'] = { pos = 2364, section = 15 },
['Bubble Coral'] = { pos = 1713, section = 15 },
['Bubble Coral Block'] = { pos = 1708, section = 15 },
['Bubble Coral Block Revision 1'] = { pos = 1703, section = 29 },
['Bubble Coral Fan'] = { pos = 2133, section = 15 },
['Bubble Coral Fan Revision 1'] = { pos = 1724, section = 29 },
['Bubble Coral Fan Revision 2'] = { pos = 2137, section = 29 },
Bucket = { pos = 3146, section = 4 },
['Bucket of Axolotl'] = { pos = 445, section = 4 },
['Bucket of Cod'] = { pos = 1686, section = 4 },
['Bucket of Mud'] = { pos = 92, section = 38 },
['Bucket of Pufferfish'] = { pos = 1687, section = 4 },
['Bucket of Pufferfish BE'] = { pos = 2087, section = 4 },
['Bucket of Salmon'] = { pos = 1688, section = 4 },
['Bucket of Tadpole'] = { pos = 573, section = 4 },
['Bucket of Tropical Fish'] = { pos = 2028, section = 4 },
['Bucket of Tropical Fish BE'] = { pos = 1685, section = 29 },
['Budding Amethyst'] = { pos = 399, section = 15 },
Bundle = { pos = 447, section = 25 },
['Buried Treasure Map'] = { pos = 3579, section = 25 },
['Buried Treasure Map BE'] = { pos = 123, section = 25 },
['Buried Treasure Map Revision 1'] = { pos = 1219, section = 25 },
['Burn Pottery Sherd'] = { pos = 1223, section = 44 },
Buttercup = { pos = 109, section = 38 },
['Byte Tag'] = { pos = 1244, section = 32 },
Cactus = { pos = 3410, section = 19 },
['Cactus BE Revision 1'] = { pos = 2163, section = 29 },
['Cactus Green'] = { pos = 689, section = 6 },
Cadmium = { pos = 1787, section = 34 },
Caesium = { pos = 1792, section = 34 },
Cake = { pos = 3598, section = 26 },
['Cake Revision 1'] = { pos = 2, section = 29 },
Calcite = { pos = 432, section = 15 },
Calcium = { pos = 1788, section = 34 },
['Calcium Bromide'] = { pos = 1915, section = 37 },
['Calcium Chloride'] = { pos = 1915, section = 37 },
Californium = { pos = 1789, section = 34 },
['Camel Spawn Egg'] = { pos = 683, section = 24 },
Camera = { pos = 1949, section = 20 },
['Camera (old)'] = { pos = 1365, section = 20 },
Campfire = { pos = 2459, section = 26 },
Candle = { pos = 400, section = 26 },
['Capri Cloth'] = { pos = 232, section = 40 },
Carbon = { pos = 1790, section = 34 },
Carrot = { pos = 3198, section = 10 },
['Carrot on a Stick'] = { pos = 3534, section = 25 },
['Carrot Revision 2'] = { pos = 127, section = 29 },
['Cartography Table'] = { pos = 2452, section = 26 },
['Cartography Table Revision 1'] = { pos = 2443, section = 26 },
['Carved Pumpkin'] = { pos = 3411, section = 19 },
['Cast Fishing Rod'] = { pos = 227, section = 25 },
['Cat Spawn Egg'] = { pos = 2410, section = 24 },
['Cat Spawn Egg Revision 1'] = { pos = 1370, section = 39 },
Cauldron = { pos = 3599, section = 26 },
['Cave Air'] = { pos = 2363, section = 15 },
['Cave Spider Spawn Egg'] = { pos = 1144, section = 24 },
['Cave Spider Spawn Egg Revision 1'] = { pos = 1369, section = 39 },
Cerium = { pos = 1791, section = 34 },
['Cerium Chloride'] = { pos = 1915, section = 37 },
Cesium = { pos = 1792, section = 34 },
Chain = { pos = 290, section = 5 },
['Chainmail Boots'] = { pos = 2473, section = 1 },
['Chainmail Chestplate'] = { pos = 2474, section = 1 },
['Chainmail Helmet'] = { pos = 2475, section = 1 },
['Chainmail Leggings'] = { pos = 2476, section = 1 },
Charcoal = { pos = 3505, section = 23 },
['Charcoal Revision 1'] = { pos = 1119, section = 29 },
['Chartreuse Cloth'] = { pos = 234, section = 40 },
Cheese = { pos = 1245, section = 32 },
['Cherry Boat'] = { pos = 1207, section = 27 },
['Cherry Boat with Chest'] = { pos = 1208, section = 27 },
['Cherry Button'] = { pos = 1188, section = 13 },
['Cherry Door'] = { pos = 1189, section = 13 },
['Cherry Fence'] = { pos = 1181, section = 12 },
['Cherry Fence Gate'] = { pos = 1190, section = 13 },
['Cherry Hanging Sign'] = { pos = 1179, section = 5 },
['Cherry Leaves'] = { pos = 1195, section = 19 },
['Cherry Log'] = { pos = 1196, section = 19 },
['Cherry Planks'] = { pos = 1182, section = 12 },
['Cherry Pressure Plate'] = { pos = 1191, section = 13 },
['Cherry Sapling'] = { pos = 1197, section = 19 },
['Cherry Sign'] = { pos = 1194, section = 17 },
['Cherry Slab'] = { pos = 1183, section = 12 },
['Cherry Stairs'] = { pos = 1184, section = 12 },
['Cherry Trapdoor'] = { pos = 1192, section = 13 },
['Cherry Wood'] = { pos = 1185, section = 12 },
['Cherry Wood Button'] = { pos = 1188, section = 13 },
['Cherry Wood Door'] = { pos = 1189, section = 13 },
['Cherry Wood Fence'] = { pos = 1181, section = 12 },
['Cherry Wood Fence Gate'] = { pos = 1190, section = 13 },
['Cherry Wood Planks'] = { pos = 1182, section = 12 },
['Cherry Wood Pressure Plate'] = { pos = 1191, section = 13 },
['Cherry Wood Sign'] = { pos = 1194, section = 17 },
['Cherry Wood Slab'] = { pos = 1183, section = 12 },
['Cherry Wood Stairs'] = { pos = 1184, section = 12 },
['Cherry Wood Trapdoor'] = { pos = 1192, section = 13 },
Chest = { pos = 1239, section = 26 },
['Chest BE'] = { pos = 58, section = 26 },
['Chest Revision 2'] = { pos = 375, section = 29 },
['Chicken Spawn Egg'] = { pos = 1145, section = 24 },
['Chicken Spawn Egg Revision 1'] = { pos = 1384, section = 39 },
['Chipped Anvil'] = { pos = 3600, section = 26 },
['Chiseled Bookshelf'] = { pos = 688, section = 26 },
['Chiseled Deepslate'] = { pos = 489, section = 12 },
['Chiseled Nether Bricks'] = { pos = 269, section = 16 },
['Chiseled Polished Blackstone'] = { pos = 270, section = 16 },
['Chiseled Quartz Block'] = { pos = 872, section = 12 },
['Chiseled Red Sandstone'] = { pos = 3244, section = 12 },
['Chiseled Sandstone'] = { pos = 3245, section = 12 },
['Chiseled Stone Bricks'] = { pos = 3357, section = 15 },
['Chiseled Stone Bricks Monster Egg'] = { pos = 3357, section = 15 },
Chlorine = { pos = 1793, section = 34 },
['Chorus Flower'] = { pos = 3412, section = 19 },
['Chorus Fruit'] = { pos = 3199, section = 10 },
['Chorus Plant'] = { pos = 3413, section = 19 },
Chromium = { pos = 1794, section = 34 },
Clay = { pos = 3358, section = 15 },
['Clay (ball)'] = { pos = 3506, section = 23 },
['Clay (block)'] = { pos = 3358, section = 15 },
['Clay Ball'] = { pos = 3506, section = 23 },
Clock = { pos = 549, section = 25 },
['Clock Revision 1'] = { pos = 2169, section = 29 },
['Clock Revision 2'] = { pos = 511, section = 29 },
Clownfish = { pos = 825, section = 10 },
['Clownfish Revision 1'] = { pos = 825, section = 10 },
['Cluckshroom Spawn Egg'] = { pos = 624, section = 38 },
Coal = { pos = 3507, section = 23 },
['Coal Ore'] = { pos = 3391, section = 18 },
['Coal Revision 2'] = { pos = 1119, section = 29 },
['Coarse Dirt'] = { pos = 974, section = 15 },
['Coast Armor Trim'] = { pos = 204, section = 41 },
['Coast Armor Trim Smithing Template'] = { pos = 204, section = 41 },
Cobalt = { pos = 1795, section = 34 },
['Cobbled Deepslate'] = { pos = 513, section = 12 },
['Cobbled Deepslate Slab'] = { pos = 494, section = 12 },
['Cobbled Deepslate Stairs'] = { pos = 495, section = 12 },
['Cobbled Deepslate Wall'] = { pos = 500, section = 12 },
['Cobbled Deepslate Wall BE'] = { pos = 560, section = 12 },
Cobblestone = { pos = 3359, section = 12 },
['Cobblestone Monster Egg'] = { pos = 3359, section = 12 },
['Cobblestone Slab'] = { pos = 3246, section = 12 },
['Cobblestone Stairs'] = { pos = 3247, section = 12 },
['Cobblestone Stairs Left'] = { pos = 2258, section = 42 },
['Cobblestone Wall'] = { pos = 3248, section = 12 },
['Cobblestone Wall BE'] = { pos = 2024, section = 12 },
Cobweb = { pos = 3360, section = 15 },
['Cocoa Beans'] = { pos = 3156, section = 6 },
['Cod Spawn Egg'] = { pos = 1697, section = 24 },
['Cod Spawn Egg Revision 1'] = { pos = 1968, section = 39 },
Compass = { pos = 550, section = 25 },
['Compass Revision 1'] = { pos = 2168, section = 29 },
['Compass Revision 2'] = { pos = 512, section = 29 },
Composter = { pos = 2460, section = 13 },
['Compound Creator'] = { pos = 1931, section = 33 },
['Compound Tag'] = { pos = 1246, section = 32 },
Conduit = { pos = 2033, section = 26 },
['Conduit BE'] = { pos = 213, section = 26 },
['Cooked Beef'] = { pos = 848, section = 10 },
['Cooked Chicken'] = { pos = 3200, section = 10 },
['Cooked Cod'] = { pos = 1690, section = 10 },
['Cooked Fish'] = { pos = 827, section = 10 },
['Cooked Fish Revision 1'] = { pos = 827, section = 10 },
['Cooked Mutton'] = { pos = 3201, section = 10 },
['Cooked Porkchop'] = { pos = 3202, section = 10 },
['Cooked Rabbit'] = { pos = 3203, section = 10 },
['Cooked Salmon'] = { pos = 1691, section = 10 },
['Cooked Salmon 3DS'] = { pos = 831, section = 10 },
['Cooked Salmon Revision 1'] = { pos = 831, section = 10 },
Cookie = { pos = 3204, section = 10 },
Copernicium = { pos = 1796, section = 34 },
Copper = { pos = 1797, section = 34 },
['Copper Block'] = { pos = 401, section = 12 },
['Copper Horn'] = { pos = 583, section = 25 },
['Copper Ingot'] = { pos = 450, section = 23 },
['Copper Ore'] = { pos = 449, section = 18 },
['Copper Sink'] = { pos = 1247, section = 32 },
['Copper Spleaves'] = { pos = 1248, section = 32 },
['Copper Trim Chainmail Boots'] = { pos = 862, section = 43 },
['Copper Trim Chainmail Chestplate'] = { pos = 863, section = 43 },
['Copper Trim Chainmail Helmet'] = { pos = 864, section = 43 },
['Copper Trim Chainmail Leggings'] = { pos = 865, section = 43 },
['Copper Trim Diamond Boots'] = { pos = 866, section = 43 },
['Copper Trim Diamond Chestplate'] = { pos = 868, section = 43 },
['Copper Trim Diamond Helmet'] = { pos = 869, section = 43 },
['Copper Trim Diamond Leggings'] = { pos = 873, section = 43 },
['Copper Trim Golden Boots'] = { pos = 874, section = 43 },
['Copper Trim Golden Chestplate'] = { pos = 875, section = 43 },
['Copper Trim Golden Helmet'] = { pos = 876, section = 43 },
['Copper Trim Golden Leggings'] = { pos = 877, section = 43 },
['Copper Trim Iron Boots'] = { pos = 878, section = 43 },
['Copper Trim Iron Chestplate'] = { pos = 879, section = 43 },
['Copper Trim Iron Helmet'] = { pos = 880, section = 43 },
['Copper Trim Iron Leggings'] = { pos = 882, section = 43 },
['Copper Trim Leather Boots'] = { pos = 883, section = 43 },
['Copper Trim Leather Cap'] = { pos = 885, section = 43 },
['Copper Trim Leather Pants'] = { pos = 887, section = 43 },
['Copper Trim Leather Tunic'] = { pos = 888, section = 43 },
['Copper Trim Netherite Boots'] = { pos = 889, section = 43 },
['Copper Trim Netherite Chestplate'] = { pos = 890, section = 43 },
['Copper Trim Netherite Helmet'] = { pos = 891, section = 43 },
['Copper Trim Netherite Leggings'] = { pos = 892, section = 43 },
['Copper Trim Turtle Shell'] = { pos = 893, section = 43 },
Cornflower = { pos = 2389, section = 19 },
['Cow Spawn Egg'] = { pos = 1146, section = 24 },
['Cow Spawn Egg Revision 1'] = { pos = 1385, section = 39 },
['Cracked Deepslate Bricks'] = { pos = 520, section = 12 },
['Cracked Deepslate Tiles'] = { pos = 521, section = 12 },
['Cracked Nether Bricks'] = { pos = 271, section = 16 },
['Cracked Polished Blackstone Bricks'] = { pos = 272, section = 16 },
['Cracked Stone Bricks'] = { pos = 3361, section = 15 },
['Cracked Stone Bricks Monster Egg'] = { pos = 3361, section = 15 },
['Crafting Table'] = { pos = 3601, section = 26 },
['Creeper Head'] = { pos = 964, section = 14 },
['Creeper Head BE'] = { pos = 215, section = 14 },
['Creeper Spawn Egg'] = { pos = 1147, section = 24 },
['Creeper Spawn Egg Revision 1'] = { pos = 1386, section = 39 },
['Crimson Button'] = { pos = 167, section = 13 },
['Crimson Door'] = { pos = 168, section = 13 },
['Crimson Fence'] = { pos = 648, section = 12 },
['Crimson Fence BE'] = { pos = 161, section = 12 },
['Crimson Fence Gate'] = { pos = 179, section = 13 },
['Crimson Fence Gate BE'] = { pos = 379, section = 13 },
['Crimson Fungus'] = { pos = 158, section = 16 },
['Crimson Hanging Sign'] = { pos = 652, section = 5 },
['Crimson Hyphae'] = { pos = 198, section = 16 },
['Crimson Nylium'] = { pos = 149, section = 16 },
['Crimson Planks'] = { pos = 146, section = 12 },
['Crimson Pressure Plate'] = { pos = 169, section = 13 },
['Crimson Roots'] = { pos = 190, section = 16 },
['Crimson Sign'] = { pos = 177, section = 17 },
['Crimson Slab'] = { pos = 162, section = 12 },
['Crimson Stairs'] = { pos = 163, section = 12 },
['Crimson Stem'] = { pos = 150, section = 16 },
['Crimson Trapdoor'] = { pos = 170, section = 13 },
Crossbow = { pos = 2382, section = 28 },
['Crude Oil'] = { pos = 1891, section = 35 },
['Crying Obsidian'] = { pos = 197, section = 16 },
['Crying Obsidian BE'] = { pos = 509, section = 16 },
['Crystallized Honey'] = { pos = 95, section = 30 },
Cuprum = { pos = 1797, section = 34 },
Curium = { pos = 1798, section = 34 },
['Cut Copper'] = { pos = 402, section = 12 },
['Cut Copper Block'] = { pos = 402, section = 12 },
['Cut Copper Slab'] = { pos = 403, section = 12 },
['Cut Copper Stairs'] = { pos = 404, section = 12 },
['Cut Red Sandstone'] = { pos = 3249, section = 12 },
['Cut Red Sandstone Slab'] = { pos = 2466, section = 12 },
['Cut Sandstone'] = { pos = 3250, section = 12 },
['Cut Sandstone Slab'] = { pos = 2467, section = 12 },
['Cyan Balloon'] = { pos = 1932, section = 33 },
['Cyan Banner'] = { pos = 722, section = 7 },
['Cyan Banner 15w14a'] = { pos = 475, section = 32 },
['Cyan Base Banner'] = { pos = 2644, section = 2 },
['Cyan Base Dexter Canton Banner'] = { pos = 2645, section = 2 },
['Cyan Base Gradient Banner'] = { pos = 2646, section = 2 },
['Cyan Base Indented Banner'] = { pos = 2647, section = 2 },
['Cyan Base Sinister Canton Banner'] = { pos = 2648, section = 2 },
['Cyan Bed'] = { pos = 3174, section = 7 },
['Cyan Bed BE'] = { pos = 1548, section = 7 },
['Cyan Bed LCE'] = { pos = 1548, section = 7 },
['Cyan Bend Banner'] = { pos = 2649, section = 2 },
['Cyan Bend Sinister Banner'] = { pos = 2650, section = 2 },
['Cyan Bordure Banner'] = { pos = 2651, section = 2 },
['Cyan Bordure Indented Banner'] = { pos = 2652, section = 2 },
['Cyan Candle'] = { pos = 405, section = 7 },
['Cyan Carpet'] = { pos = 1624, section = 7 },
['Cyan Carpet Revision 1'] = { pos = 723, section = 40 },
['Cyan Chevron Banner'] = { pos = 2653, section = 2 },
['Cyan Chief Banner'] = { pos = 2655, section = 2 },
['Cyan Chief Dexter Canton Banner'] = { pos = 2656, section = 2 },
['Cyan Chief Indented Banner'] = { pos = 2657, section = 2 },
['Cyan Chief Sinister Canton Banner'] = { pos = 2658, section = 2 },
['Cyan Cloth'] = { pos = 229, section = 40 },
['Cyan Concrete'] = { pos = 1484, section = 7 },
['Cyan Concrete Powder'] = { pos = 1485, section = 7 },
['Cyan Creeper Charge Banner'] = { pos = 2659, section = 2 },
['Cyan Cross Banner'] = { pos = 2660, section = 2 },
['Cyan Dye'] = { pos = 3157, section = 6 },
['Cyan Fess Banner'] = { pos = 2661, section = 2 },
['Cyan Field Masoned Banner'] = { pos = 2662, section = 2 },
['Cyan Firework Star'] = { pos = 807, section = 9 },
['Cyan Flower Charge Banner'] = { pos = 2663, section = 2 },
['Cyan Glazed Terracotta'] = { pos = 1540, section = 7 },
['Cyan Glazed Terracotta Revision 1'] = { pos = 1486, section = 40 },
['Cyan Globe Banner'] = { pos = 38, section = 2 },
['Cyan Glow Stick'] = { pos = 1979, section = 33 },
['Cyan Gradient Banner'] = { pos = 2664, section = 2 },
['Cyan Inverted Chevron Banner'] = { pos = 2654, section = 2 },
['Cyan Lozenge Banner'] = { pos = 2665, section = 2 },
['Cyan Pale Banner'] = { pos = 2666, section = 2 },
['Cyan Pale Dexter Banner'] = { pos = 2667, section = 2 },
['Cyan Pale Sinister Banner'] = { pos = 2668, section = 2 },
['Cyan Paly Banner'] = { pos = 2669, section = 2 },
['Cyan Per Bend Banner'] = { pos = 2670, section = 2 },
['Cyan Per Bend Inverted Banner'] = { pos = 2671, section = 2 },
['Cyan Per Bend Sinister Banner'] = { pos = 2672, section = 2 },
['Cyan Per Bend Sinister Inverted Banner'] = { pos = 2673, section = 2 },
['Cyan Per Fess Banner'] = { pos = 2674, section = 2 },
['Cyan Per Fess Inverted Banner'] = { pos = 2675, section = 2 },
['Cyan Per Pale Banner'] = { pos = 2676, section = 2 },
['Cyan Per Pale Inverted Banner'] = { pos = 2677, section = 2 },
['Cyan Piglin Banner'] = { pos = 362, section = 2 },
['Cyan Roundel Banner'] = { pos = 2678, section = 2 },
['Cyan Saltire Banner'] = { pos = 2679, section = 2 },
['Cyan Shield'] = { pos = 2477, section = 1 },
['Cyan Shulker Box'] = { pos = 1606, section = 7 },
['Cyan Shulker Box Revision 1'] = { pos = 1419, section = 40 },
['Cyan Skull Charge Banner'] = { pos = 2680, section = 2 },
['Cyan Snout Banner'] = { pos = 362, section = 2 },
['Cyan Stained Glass'] = { pos = 725, section = 7 },
['Cyan Stained Glass Pane'] = { pos = 726, section = 7 },
['Cyan Stained Glass Pane BE'] = { pos = 2011, section = 7 },
['Cyan Terracotta'] = { pos = 724, section = 7 },
['Cyan Thing Banner'] = { pos = 2681, section = 2 },
['Cyan Tinted Glass'] = { pos = 1298, section = 40 },
['Cyan Tinted Glass Pane'] = { pos = 6, section = 40 },
['Cyan Wood Planks'] = { pos = 247, section = 30 },
['Cyan Wool'] = { pos = 1526, section = 7 },
['Cyan Wool Revision 2'] = { pos = 727, section = 40 },
Cyanoacrylate = { pos = 1750, section = 33 },
['Damaged Anvil'] = { pos = 3602, section = 26 },
['Damaged Arrow Loaded Crossbow'] = { pos = 2384, section = 28 },
['Damaged Bow'] = { pos = 1281, section = 28 },
['Damaged Brush'] = { pos = 1209, section = 25 },
['Damaged Carrot on a Stick'] = { pos = 3535, section = 25 },
['Damaged Chainmail Boots'] = { pos = 2478, section = 1 },
['Damaged Chainmail Chestplate'] = { pos = 2479, section = 1 },
['Damaged Chainmail Helmet'] = { pos = 2480, section = 1 },
['Damaged Chainmail Leggings'] = { pos = 2481, section = 1 },
['Damaged Crossbow'] = { pos = 2385, section = 28 },
['Damaged Diamond Axe'] = { pos = 3536, section = 25 },
['Damaged Diamond Boots'] = { pos = 2482, section = 1 },
['Damaged Diamond Chestplate'] = { pos = 2483, section = 1 },
['Damaged Diamond Helmet'] = { pos = 2484, section = 1 },
['Damaged Diamond Hoe'] = { pos = 3537, section = 25 },
['Damaged Diamond Leggings'] = { pos = 2485, section = 1 },
['Damaged Diamond Pickaxe'] = { pos = 3538, section = 25 },
['Damaged Diamond Shovel'] = { pos = 3539, section = 25 },
['Damaged Diamond Sword'] = { pos = 3630, section = 28 },
['Damaged Elytra'] = { pos = 2486, section = 1 },
['Damaged Firework Loaded Crossbow'] = { pos = 2386, section = 28 },
['Damaged Fishing Rod'] = { pos = 3540, section = 25 },
['Damaged Flint and Steel'] = { pos = 3541, section = 25 },
['Damaged Golden Axe'] = { pos = 3542, section = 25 },
['Damaged Golden Boots'] = { pos = 2487, section = 1 },
['Damaged Golden Chestplate'] = { pos = 2488, section = 1 },
['Damaged Golden Helmet'] = { pos = 2489, section = 1 },
['Damaged Golden Hoe'] = { pos = 3543, section = 25 },
['Damaged Golden Leggings'] = { pos = 2490, section = 1 },
['Damaged Golden Pickaxe'] = { pos = 3544, section = 25 },
['Damaged Golden Shovel'] = { pos = 3545, section = 25 },
['Damaged Golden Sword'] = { pos = 3631, section = 28 },
['Damaged Iron Axe'] = { pos = 3546, section = 25 },
['Damaged Iron Boots'] = { pos = 2491, section = 1 },
['Damaged Iron Chestplate'] = { pos = 2492, section = 1 },
['Damaged Iron Helmet'] = { pos = 2493, section = 1 },
['Damaged Iron Hoe'] = { pos = 3547, section = 25 },
['Damaged Iron Leggings'] = { pos = 2494, section = 1 },
['Damaged Iron Pickaxe'] = { pos = 3548, section = 25 },
['Damaged Iron Shovel'] = { pos = 3549, section = 25 },
['Damaged Iron Sword'] = { pos = 3632, section = 28 },
['Damaged Leather Boots'] = { pos = 2495, section = 1 },
['Damaged Leather Cap'] = { pos = 2496, section = 1 },
['Damaged Leather Pants'] = { pos = 2497, section = 1 },
['Damaged Leather Tunic'] = { pos = 2498, section = 1 },
['Damaged Netherite Axe'] = { pos = 181, section = 25 },
['Damaged Netherite Boots'] = { pos = 182, section = 1 },
['Damaged Netherite Chestplate'] = { pos = 183, section = 1 },
['Damaged Netherite Helmet'] = { pos = 184, section = 1 },
['Damaged Netherite Hoe'] = { pos = 185, section = 25 },
['Damaged Netherite Leggings'] = { pos = 186, section = 1 },
['Damaged Netherite Pickaxe'] = { pos = 187, section = 25 },
['Damaged Netherite Shovel'] = { pos = 188, section = 25 },
['Damaged Netherite Sword'] = { pos = 189, section = 28 },
['Damaged Shears'] = { pos = 3550, section = 25 },
['Damaged Shield'] = { pos = 2499, section = 1 },
['Damaged Stone Axe'] = { pos = 3551, section = 25 },
['Damaged Stone Hoe'] = { pos = 3552, section = 25 },
['Damaged Stone Pickaxe'] = { pos = 3553, section = 25 },
['Damaged Stone Shovel'] = { pos = 3554, section = 25 },
['Damaged Stone Sword'] = { pos = 3633, section = 28 },
['Damaged Trident'] = { pos = 100, section = 28 },
['Damaged Turtle Shell'] = { pos = 2456, section = 1 },
['Damaged Warped Fungus on a Stick'] = { pos = 382, section = 25 },
['Damaged Wooden Axe'] = { pos = 3555, section = 25 },
['Damaged Wooden Hoe'] = { pos = 3556, section = 25 },
['Damaged Wooden Pickaxe'] = { pos = 3557, section = 25 },
['Damaged Wooden Shovel'] = { pos = 3558, section = 25 },
['Damaged Wooden Sword'] = { pos = 3634, section = 28 },
Dandelion = { pos = 3414, section = 19 },
['Dandelion Yellow'] = { pos = 692, section = 6 },
['Danger Pottery Sherd'] = { pos = 1224, section = 44 },
['Dark Gray Beaker'] = { pos = 1894, section = 35 },
['Dark Gray Cloth'] = { pos = 230, section = 40 },
['Dark Gray Flask'] = { pos = 1905, section = 36 },
['Dark Gray Jar'] = { pos = 1919, section = 37 },
['Dark Oak Boat'] = { pos = 638, section = 27 },
['Dark Oak Boat Revision 2'] = { pos = 3620, section = 29 },
['Dark Oak Boat with Chest'] = { pos = 614, section = 27 },
['Dark Oak Button'] = { pos = 3332, section = 13 },
['Dark Oak Door'] = { pos = 568, section = 13 },
['Dark Oak Door Revision 3'] = { pos = 939, section = 13 },
['Dark Oak Fence'] = { pos = 646, section = 12 },
['Dark Oak Fence BE'] = { pos = 3252, section = 12 },
['Dark Oak Fence Gate'] = { pos = 3251, section = 13 },
['Dark Oak Fence Gate BE'] = { pos = 54, section = 13 },
['Dark Oak Hanging Sign'] = { pos = 653, section = 5 },
['Dark Oak Leaves'] = { pos = 3415, section = 19 },
['Dark Oak Log'] = { pos = 3416, section = 19 },
['Dark Oak Planks'] = { pos = 881, section = 12 },
['Dark Oak Pressure Plate'] = { pos = 3333, section = 13 },
['Dark Oak Sapling'] = { pos = 3417, section = 19 },
['Dark Oak Sign'] = { pos = 2397, section = 17 },
['Dark Oak Slab'] = { pos = 3253, section = 12 },
['Dark Oak Stairs'] = { pos = 3254, section = 12 },
['Dark Oak Trapdoor'] = { pos = 1651, section = 13 },
['Dark Oak Wood'] = { pos = 3255, section = 12 },
['Dark Oak Wood Button'] = { pos = 3332, section = 13 },
['Dark Oak Wood Door'] = { pos = 568, section = 13 },
['Dark Oak Wood Fence'] = { pos = 646, section = 12 },
['Dark Oak Wood Fence Gate'] = { pos = 3251, section = 13 },
['Dark Oak Wood Planks'] = { pos = 881, section = 12 },
['Dark Oak Wood Pressure Plate'] = { pos = 3333, section = 13 },
['Dark Oak Wood Sign'] = { pos = 2397, section = 17 },
['Dark Oak Wood Slab'] = { pos = 3253, section = 12 },
['Dark Oak Wood Stairs'] = { pos = 3254, section = 12 },
['Dark Oak Wood Trapdoor'] = { pos = 1651, section = 13 },
['Dark Prismarine'] = { pos = 3362, section = 15 },
['Dark Prismarine Slab'] = { pos = 3256, section = 12 },
['Dark Prismarine Stairs'] = { pos = 3257, section = 12 },
Darmstadtium = { pos = 1799, section = 34 },
['Daylight Detector'] = { pos = 1242, section = 26 },
['Daylight Sensor'] = { pos = 1242, section = 26 },
['Dead Brain Coral'] = { pos = 2368, section = 15 },
['Dead Brain Coral Block'] = { pos = 1718, section = 15 },
['Dead Brain Coral Fan'] = { pos = 2146, section = 15 },
['Dead Brain Coral Fan Revision 1'] = { pos = 1737, section = 29 },
['Dead Bubble Coral'] = { pos = 2369, section = 15 },
['Dead Bubble Coral Block'] = { pos = 1719, section = 15 },
['Dead Bubble Coral Fan'] = { pos = 2147, section = 15 },
['Dead Bubble Coral Fan Revision 1'] = { pos = 1738, section = 29 },
['Dead Bush'] = { pos = 3418, section = 19 },
['Dead Coral'] = { pos = 1701, section = 29 },
['Dead Fire Coral'] = { pos = 2370, section = 15 },
['Dead Fire Coral Block'] = { pos = 1720, section = 15 },
['Dead Fire Coral Fan'] = { pos = 2148, section = 15 },
['Dead Fire Coral Fan Revision 1'] = { pos = 1739, section = 29 },
['Dead Horn Coral'] = { pos = 2371, section = 15 },
['Dead Horn Coral Block'] = { pos = 1721, section = 15 },
['Dead Horn Coral Fan'] = { pos = 2149, section = 15 },
['Dead Horn Coral Fan Revision 1'] = { pos = 1740, section = 29 },
['Dead Tube Coral'] = { pos = 2367, section = 15 },
['Dead Tube Coral Block'] = { pos = 1717, section = 15 },
['Dead Tube Coral Fan'] = { pos = 2150, section = 15 },
['Dead Tube Coral Fan Revision 1'] = { pos = 1741, section = 29 },
['Debug Stick'] = { pos = 1140, section = 23 },
['Decorated Pot'] = { pos = 1180, section = 5 },
Deepslate = { pos = 503, section = 15 },
['Deepslate Brick Slab'] = { pos = 490, section = 12 },
['Deepslate Brick Stairs'] = { pos = 491, section = 12 },
['Deepslate Brick Wall'] = { pos = 492, section = 12 },
['Deepslate Brick Wall BE'] = { pos = 563, section = 12 },
['Deepslate Bricks'] = { pos = 493, section = 12 },
['Deepslate Coal Ore'] = { pos = 522, section = 18 },
['Deepslate Copper Ore'] = { pos = 523, section = 18 },
['Deepslate Diamond Ore'] = { pos = 514, section = 18 },
['Deepslate Emerald Ore'] = { pos = 524, section = 18 },
['Deepslate Gold Ore'] = { pos = 515, section = 18 },
['Deepslate Iron Ore'] = { pos = 516, section = 18 },
['Deepslate Lapis Lazuli Ore'] = { pos = 517, section = 18 },
['Deepslate Redstone Ore'] = { pos = 518, section = 18 },
['Deepslate Tile Slab'] = { pos = 496, section = 12 },
['Deepslate Tile Stairs'] = { pos = 497, section = 12 },
['Deepslate Tile Wall'] = { pos = 498, section = 12 },
['Deepslate Tile Wall BE'] = { pos = 561, section = 12 },
['Deepslate Tiles'] = { pos = 499, section = 12 },
Deny = { pos = 1436, section = 20 },
['Desert Village Map'] = { pos = 1326, section = 25 },
['Desert Village Map BE'] = { pos = 1327, section = 25 },
['Detector Rail'] = { pos = 3334, section = 13 },
Diamond = { pos = 3508, section = 23 },
['Diamond Axe'] = { pos = 3559, section = 25 },
['Diamond Boots'] = { pos = 2500, section = 1 },
['Diamond Chestplate'] = { pos = 2501, section = 1 },
['Diamond Drows'] = { pos = 1320, section = 32 },
['Diamond Heart'] = { pos = 118, section = 32 },
['Diamond Helmet'] = { pos = 2502, section = 1 },
['Diamond Hoe'] = { pos = 3560, section = 25 },
['Diamond Horse Armor'] = { pos = 29, section = 1 },
['Diamond Leggings'] = { pos = 2503, section = 1 },
['Diamond Ore'] = { pos = 3392, section = 18 },
['Diamond Pickaxe'] = { pos = 3561, section = 25 },
['Diamond Shovel'] = { pos = 3562, section = 25 },
['Diamond Sword'] = { pos = 3635, section = 28 },
['Diamond Trim Chainmail Boots'] = { pos = 894, section = 43 },
['Diamond Trim Chainmail Chestplate'] = { pos = 895, section = 43 },
['Diamond Trim Chainmail Helmet'] = { pos = 897, section = 43 },
['Diamond Trim Chainmail Leggings'] = { pos = 898, section = 43 },
['Diamond Trim Diamond Boots'] = { pos = 899, section = 43 },
['Diamond Trim Diamond Chestplate'] = { pos = 900, section = 43 },
['Diamond Trim Diamond Helmet'] = { pos = 902, section = 43 },
['Diamond Trim Diamond Leggings'] = { pos = 905, section = 43 },
['Diamond Trim Golden Boots'] = { pos = 912, section = 43 },
['Diamond Trim Golden Chestplate'] = { pos = 913, section = 43 },
['Diamond Trim Golden Helmet'] = { pos = 914, section = 43 },
['Diamond Trim Golden Leggings'] = { pos = 915, section = 43 },
['Diamond Trim Iron Boots'] = { pos = 916, section = 43 },
['Diamond Trim Iron Chestplate'] = { pos = 917, section = 43 },
['Diamond Trim Iron Helmet'] = { pos = 918, section = 43 },
['Diamond Trim Iron Leggings'] = { pos = 919, section = 43 },
['Diamond Trim Leather Boots'] = { pos = 921, section = 43 },
['Diamond Trim Leather Cap'] = { pos = 922, section = 43 },
['Diamond Trim Leather Pants'] = { pos = 924, section = 43 },
['Diamond Trim Leather Tunic'] = { pos = 925, section = 43 },
['Diamond Trim Netherite Boots'] = { pos = 926, section = 43 },
['Diamond Trim Netherite Chestplate'] = { pos = 927, section = 43 },
['Diamond Trim Netherite Helmet'] = { pos = 928, section = 43 },
['Diamond Trim Netherite Leggings'] = { pos = 930, section = 43 },
['Diamond Trim Turtle Shell'] = { pos = 931, section = 43 },
Diorite = { pos = 3363, section = 15 },
['Diorite Slab'] = { pos = 3258, section = 12 },
['Diorite Stairs'] = { pos = 3259, section = 12 },
['Diorite Wall'] = { pos = 3260, section = 12 },
['Diorite Wall BE'] = { pos = 23, section = 12 },
Dirt = { pos = 979, section = 15 },
['Dirt Path'] = { pos = 1348, section = 15 },
['Disc Fragment 5'] = { pos = 631, section = 23 },
Dispenser = { pos = 3603, section = 26 },
['Dispenser Revision 1'] = { pos = 2239, section = 29 },
['Dolphin Spawn Egg'] = { pos = 1967, section = 24 },
['Donkey Spawn Egg'] = { pos = 1371, section = 24 },
['Donkey Spawn Egg Revision 1'] = { pos = 1152, section = 24 },
['Double Smooth Stone Slab'] = { pos = 884, section = 12 },
['Double Tag'] = { pos = 1250, section = 32 },
['Dragon Egg'] = { pos = 3187, section = 8 },
['Dragon Egg BE'] = { pos = 506, section = 8 },
['Dragon Head'] = { pos = 965, section = 14 },
['Dragon Head BE'] = { pos = 216, section = 14 },
['Dragon Head BE Revision 1'] = { pos = 108, section = 29 },
["Dragon's Breath"] = { pos = 3138, section = 3 },
['Dried Kelp'] = { pos = 1682, section = 10 },
['Dried Kelp Block'] = { pos = 1669, section = 12 },
['Dripstone Block'] = { pos = 435, section = 15 },
Dropper = { pos = 3604, section = 26 },
['Drowned Spawn Egg'] = { pos = 1727, section = 24 },
Dubnium = { pos = 1800, section = 34 },
['Dune Armor Trim'] = { pos = 702, section = 41 },
['Dune Armor Trim Smithing Template'] = { pos = 702, section = 41 },
['Dupe Hack'] = { pos = 1321, section = 32 },
Dysprosium = { pos = 1801, section = 34 },
['Earth Ruby'] = { pos = 130, section = 38 },
['Echo Shard'] = { pos = 622, section = 23 },
Egg = { pos = 3205, section = 10 },
Einsteinium = { pos = 1802, section = 34 },
['Elder Guardian Spawn Egg'] = { pos = 1372, section = 24 },
['Element Constructor'] = { pos = 1933, section = 33 },
Elixir = { pos = 1751, section = 33 },
Elytra = { pos = 2504, section = 1 },
Emerald = { pos = 3509, section = 23 },
['Emerald Ore'] = { pos = 3393, section = 18 },
['Emerald Trim Chainmail Boots'] = { pos = 932, section = 43 },
['Emerald Trim Chainmail Chestplate'] = { pos = 934, section = 43 },
['Emerald Trim Chainmail Helmet'] = { pos = 936, section = 43 },
['Emerald Trim Chainmail Leggings'] = { pos = 938, section = 43 },
['Emerald Trim Diamond Boots'] = { pos = 940, section = 43 },
['Emerald Trim Diamond Chestplate'] = { pos = 943, section = 43 },
['Emerald Trim Diamond Helmet'] = { pos = 944, section = 43 },
['Emerald Trim Diamond Leggings'] = { pos = 946, section = 43 },
['Emerald Trim Golden Boots'] = { pos = 947, section = 43 },
['Emerald Trim Golden Chestplate'] = { pos = 948, section = 43 },
['Emerald Trim Golden Helmet'] = { pos = 949, section = 43 },
['Emerald Trim Golden Leggings'] = { pos = 950, section = 43 },
['Emerald Trim Iron Boots'] = { pos = 951, section = 43 },
['Emerald Trim Iron Chestplate'] = { pos = 952, section = 43 },
['Emerald Trim Iron Helmet'] = { pos = 953, section = 43 },
['Emerald Trim Iron Leggings'] = { pos = 955, section = 43 },
['Emerald Trim Leather Boots'] = { pos = 956, section = 43 },
['Emerald Trim Leather Cap'] = { pos = 957, section = 43 },
['Emerald Trim Leather Pants'] = { pos = 959, section = 43 },
['Emerald Trim Leather Tunic'] = { pos = 960, section = 43 },
['Emerald Trim Netherite Boots'] = { pos = 961, section = 43 },
['Emerald Trim Netherite Chestplate'] = { pos = 962, section = 43 },
['Emerald Trim Netherite Helmet'] = { pos = 963, section = 43 },
['Emerald Trim Netherite Leggings'] = { pos = 970, section = 43 },
['Emerald Trim Turtle Shell'] = { pos = 972, section = 43 },
['Empty Locator Map'] = { pos = 3563, section = 25 },
['Empty Map'] = { pos = 3563, section = 25 },
['Enchanted Apple'] = { pos = 3206, section = 10 },
['Enchanted Book'] = { pos = 3564, section = 25 },
['Enchanted Golden Apple'] = { pos = 3206, section = 10 },
['Enchanting Table'] = { pos = 3605, section = 26 },
['Enchanting Table BE'] = { pos = 214, section = 26 },
['Enchantment Table'] = { pos = 3605, section = 26 },
['End Crystal'] = { pos = 3188, section = 8 },
['End Gateway'] = { pos = 1561, section = 8 },
['End Gateway BE'] = { pos = 352, section = 8 },
['End Portal'] = { pos = 1010, section = 17 },
['End Portal BE'] = { pos = 353, section = 8 },
['End Portal Frame'] = { pos = 3189, section = 8 },
['End Portal Frame BE'] = { pos = 507, section = 8 },
['End Rod'] = { pos = 3190, section = 8 },
['End Rod BE'] = { pos = 208, section = 8 },
['End Stone'] = { pos = 3191, section = 8 },
['End Stone Brick Slab'] = { pos = 2418, section = 12 },
['End Stone Brick Stairs'] = { pos = 2419, section = 12 },
['End Stone Brick Wall'] = { pos = 2401, section = 12 },
['End Stone Brick Wall BE'] = { pos = 24, section = 12 },
['End Stone Bricks'] = { pos = 3261, section = 12 },
['Ender Chest'] = { pos = 3606, section = 26 },
['Ender Chest BE'] = { pos = 2372, section = 26 },
['Ender Dragon Spawn Egg'] = { pos = 695, section = 24 },
['Ender Pearl'] = { pos = 3510, section = 23 },
['Enderman Spawn Egg'] = { pos = 1148, section = 24 },
['Enderman Spawn Egg Revision 1'] = { pos = 1387, section = 39 },
['Endermite Spawn Egg'] = { pos = 1149, section = 24 },
Erbium = { pos = 1803, section = 34 },
['Etho Slab'] = { pos = 2117, section = 32 },
Europium = { pos = 1804, section = 34 },
['Evoker Spawn Egg'] = { pos = 1411, section = 24 },
['Explorer Pottery Sherd'] = { pos = 1225, section = 44 },
['Exposed Copper'] = { pos = 411, section = 12 },
['Exposed Copper Block'] = { pos = 411, section = 12 },
['Exposed Cut Copper'] = { pos = 412, section = 12 },
['Exposed Cut Copper Block'] = { pos = 412, section = 12 },
['Exposed Cut Copper Slab'] = { pos = 413, section = 12 },
['Exposed Cut Copper Stairs'] = { pos = 414, section = 12 },
['Eye Armor Trim'] = { pos = 800, section = 41 },
['Eye Armor Trim Smithing Template'] = { pos = 800, section = 41 },
['Eye Drops'] = { pos = 1752, section = 33 },
['Eye of Ender'] = { pos = 3565, section = 25 },
['Fancy Feather'] = { pos = 384, section = 38 },
Farmland = { pos = 886, section = 12 },
Feather = { pos = 3511, section = 23 },
['Fermented Spider Eye'] = { pos = 3139, section = 3 },
Fermium = { pos = 1805, section = 34 },
Fern = { pos = 3419, section = 19 },
Ferrum = { pos = 1806, section = 34 },
['Filled Bundle'] = { pos = 429, section = 25 },
['Finished Nether Reactor Core'] = { pos = 1601, section = 20 },
['Finished Nether Reactor Core Revision 1'] = { pos = 1598, section = 29 },
['Fire Charge'] = { pos = 3566, section = 25 },
['Fire Coral'] = { pos = 1714, section = 15 },
['Fire Coral Block'] = { pos = 1709, section = 15 },
['Fire Coral Block Revision 1'] = { pos = 1704, section = 29 },
['Fire Coral Fan'] = { pos = 1725, section = 15 },
['Fire Coral Fan Revision 1'] = { pos = 2139, section = 29 },
['Fire Coral Revision 1'] = { pos = 2140, section = 29 },
['Firefly Spawn Egg'] = { pos = 632, section = 24 },
['Firework Loaded Crossbow'] = { pos = 2387, section = 28 },
['Firework Rocket'] = { pos = 3192, section = 9 },
['Firework Star'] = { pos = 809, section = 9 },
['Fishing Rod'] = { pos = 3567, section = 25 },
Flask = { pos = 1906, section = 36 },
Flerovium = { pos = 1807, section = 34 },
['Fletching Table'] = { pos = 2453, section = 26 },
['Fletching Table Revision 1'] = { pos = 2444, section = 26 },
Flint = { pos = 3512, section = 23 },
['Flint and Steel'] = { pos = 3568, section = 25 },
['Float Tag'] = { pos = 1252, section = 32 },
['Flower Pot'] = { pos = 3151, section = 5 },
['Flowering Azalea'] = { pos = 467, section = 19 },
['Flowering Azalea Leaves'] = { pos = 468, section = 19 },
['Flowing Lava'] = { pos = 2129, section = 11 },
['Flowing Lava BE Revision 2'] = { pos = 2130, section = 29 },
['Flowing Water'] = { pos = 2127, section = 11 },
['Flowing Water BE'] = { pos = 2128, section = 11 },
['Flowing Water Revision 2'] = { pos = 851, section = 29 },
Fluorine = { pos = 1808, section = 34 },
Footprint = { pos = 266, section = 32 },
['Fox Spawn Egg'] = { pos = 2464, section = 24 },
Francium = { pos = 1809, section = 34 },
['Friend Pottery Sherd'] = { pos = 1226, section = 44 },
['Frog Spawn'] = { pos = 574, section = 5 },
['Frog Spawn Egg'] = { pos = 575, section = 24 },
Frogspawn = { pos = 574, section = 5 },
['Frosted Ice'] = { pos = 984, section = 15 },
Furnace = { pos = 3607, section = 26 },
Gadolinium = { pos = 1810, section = 34 },
Gallium = { pos = 1811, section = 34 },
Garbage = { pos = 1753, section = 33 },
Germanium = { pos = 1812, section = 34 },
['Ghast Spawn Egg'] = { pos = 1150, section = 24 },
['Ghast Spawn Egg Revision 1'] = { pos = 1388, section = 39 },
['Ghast Tear'] = { pos = 3140, section = 3 },
['Gilded Blackstone'] = { pos = 273, section = 16 },
Glass = { pos = 3263, section = 12 },
['Glass Bottle'] = { pos = 3569, section = 25 },
['Glass Pane'] = { pos = 3262, section = 12 },
['Glass Pane BE'] = { pos = 2025, section = 12 },
['Glistering Melon'] = { pos = 659, section = 3 },
['Glistering Melon Slice'] = { pos = 3141, section = 3 },
['Glow Berries'] = { pos = 460, section = 10 },
['Glow Ink Sac'] = { pos = 456, section = 23 },
['Glow Item Frame'] = { pos = 454, section = 5 },
['Glow Lichen'] = { pos = 455, section = 19 },
['Glow Squid Spawn Egg'] = { pos = 457, section = 24 },
['Glowing Obsidian'] = { pos = 1080, section = 20 },
Glowstone = { pos = 3382, section = 16 },
['Glowstone BE'] = { pos = 210, section = 16 },
['Glowstone Dust'] = { pos = 3513, section = 23 },
Glue = { pos = 1750, section = 33 },
['Goat Horn'] = { pos = 390, section = 25 },
['Goat Spawn Egg'] = { pos = 392, section = 24 },
Gold = { pos = 1779, section = 34 },
['Gold Heart'] = { pos = 119, section = 32 },
['Gold Ingot'] = { pos = 3514, section = 23 },
['Gold Nugget'] = { pos = 3515, section = 23 },
['Gold Ore'] = { pos = 3394, section = 18 },
['Gold Trim Chainmail Boots'] = { pos = 973, section = 43 },
['Gold Trim Chainmail Chestplate'] = { pos = 975, section = 43 },
['Gold Trim Chainmail Helmet'] = { pos = 976, section = 43 },
['Gold Trim Chainmail Leggings'] = { pos = 977, section = 43 },
['Gold Trim Diamond Boots'] = { pos = 978, section = 43 },
['Gold Trim Diamond Chestplate'] = { pos = 980, section = 43 },
['Gold Trim Diamond Helmet'] = { pos = 982, section = 43 },
['Gold Trim Diamond Leggings'] = { pos = 983, section = 43 },
['Gold Trim Golden Boots'] = { pos = 987, section = 43 },
['Gold Trim Golden Chestplate'] = { pos = 988, section = 43 },
['Gold Trim Golden Helmet'] = { pos = 989, section = 43 },
['Gold Trim Golden Leggings'] = { pos = 990, section = 43 },
['Gold Trim Iron Boots'] = { pos = 991, section = 43 },
['Gold Trim Iron Chestplate'] = { pos = 992, section = 43 },
['Gold Trim Iron Helmet'] = { pos = 993, section = 43 },
['Gold Trim Iron Leggings'] = { pos = 994, section = 43 },
['Gold Trim Leather Boots'] = { pos = 995, section = 43 },
['Gold Trim Leather Cap'] = { pos = 996, section = 43 },
['Gold Trim Leather Pants'] = { pos = 997, section = 43 },
['Gold Trim Leather Tunic'] = { pos = 998, section = 43 },
['Gold Trim Netherite Boots'] = { pos = 1001, section = 43 },
['Gold Trim Netherite Chestplate'] = { pos = 1002, section = 43 },
['Gold Trim Netherite Helmet'] = { pos = 1004, section = 43 },
['Gold Trim Netherite Leggings'] = { pos = 1005, section = 43 },
['Gold Trim Turtle Shell'] = { pos = 1006, section = 43 },
['Golden Apple'] = { pos = 3206, section = 10 },
['Golden Axe'] = { pos = 3570, section = 25 },
['Golden Boots'] = { pos = 2505, section = 1 },
['Golden Carrot'] = { pos = 3142, section = 3 },
['Golden Chestplate'] = { pos = 2506, section = 1 },
['Golden Helmet'] = { pos = 2507, section = 1 },
['Golden Hoe'] = { pos = 3571, section = 25 },
['Golden Horse Armor'] = { pos = 34, section = 1 },
['Golden Leggings'] = { pos = 2508, section = 1 },
['Golden Pickaxe'] = { pos = 3572, section = 25 },
['Golden Shovel'] = { pos = 3573, section = 25 },
['Golden Sword'] = { pos = 3636, section = 28 },
Granite = { pos = 3364, section = 15 },
['Granite Slab'] = { pos = 2420, section = 12 },
['Granite Stairs'] = { pos = 2421, section = 12 },
['Granite Wall'] = { pos = 2402, section = 12 },
['Granite Wall BE'] = { pos = 25, section = 12 },
Grass = { pos = 3420, section = 19 },
['Grass Block'] = { pos = 981, section = 15 },
['Grass Block Revision 1'] = { pos = 2312, section = 29 },
['Grass Block Revision 2'] = { pos = 2359, section = 29 },
['Grass Path'] = { pos = 1348, section = 15 },
Gravel = { pos = 3365, section = 15 },
['Gray Balloon'] = { pos = 1934, section = 33 },
['Gray Banner'] = { pos = 728, section = 7 },
['Gray Banner 15w14a'] = { pos = 476, section = 32 },
['Gray Base Banner'] = { pos = 2682, section = 2 },
['Gray Base Dexter Canton Banner'] = { pos = 2683, section = 2 },
['Gray Base Gradient Banner'] = { pos = 2684, section = 2 },
['Gray Base Indented Banner'] = { pos = 2685, section = 2 },
['Gray Base Sinister Canton Banner'] = { pos = 2686, section = 2 },
['Gray Bed'] = { pos = 3175, section = 7 },
['Gray Bed BE'] = { pos = 1549, section = 7 },
['Gray Bed LCE'] = { pos = 1549, section = 7 },
['Gray Bend Banner'] = { pos = 2687, section = 2 },
['Gray Bend Sinister Banner'] = { pos = 2688, section = 2 },
['Gray Bordure Banner'] = { pos = 2689, section = 2 },
['Gray Bordure Indented Banner'] = { pos = 2690, section = 2 },
['Gray Candle'] = { pos = 406, section = 7 },
['Gray Carpet'] = { pos = 1625, section = 7 },
['Gray Carpet Revision 1'] = { pos = 729, section = 40 },
['Gray Chevron Banner'] = { pos = 2691, section = 2 },
['Gray Chief Banner'] = { pos = 2692, section = 2 },
['Gray Chief Dexter Canton Banner'] = { pos = 2693, section = 2 },
['Gray Chief Indented Banner'] = { pos = 2694, section = 2 },
['Gray Chief Sinister Canton Banner'] = { pos = 2695, section = 2 },
['Gray Concrete'] = { pos = 1487, section = 7 },
['Gray Concrete Powder'] = { pos = 1488, section = 7 },
['Gray Creeper Charge Banner'] = { pos = 2696, section = 2 },
['Gray Cross Banner'] = { pos = 2697, section = 2 },
['Gray Dye'] = { pos = 3158, section = 6 },
['Gray Fess Banner'] = { pos = 2698, section = 2 },
['Gray Field Masoned Banner'] = { pos = 2699, section = 2 },
['Gray Firework Star'] = { pos = 810, section = 9 },
['Gray Flower Charge Banner'] = { pos = 2700, section = 2 },
['Gray Glazed Terracotta'] = { pos = 1489, section = 7 },
['Gray Globe Banner'] = { pos = 40, section = 2 },
['Gray Glow Stick'] = { pos = 1980, section = 33 },
['Gray Gradient Banner'] = { pos = 2701, section = 2 },
['Gray Inverted Chevron Banner'] = { pos = 2702, section = 2 },
['Gray Lozenge Banner'] = { pos = 2703, section = 2 },
['Gray Pale Banner'] = { pos = 2704, section = 2 },
['Gray Pale Dexter Banner'] = { pos = 2705, section = 2 },
['Gray Pale Sinister Banner'] = { pos = 2706, section = 2 },
['Gray Paly Banner'] = { pos = 2707, section = 2 },
['Gray Per Bend Banner'] = { pos = 2708, section = 2 },
['Gray Per Bend Inverted Banner'] = { pos = 2709, section = 2 },
['Gray Per Bend Sinister Banner'] = { pos = 2710, section = 2 },
['Gray Per Bend Sinister Inverted Banner'] = { pos = 2711, section = 2 },
['Gray Per Fess Banner'] = { pos = 2712, section = 2 },
['Gray Per Fess Inverted Banner'] = { pos = 2713, section = 2 },
['Gray Per Pale Banner'] = { pos = 2714, section = 2 },
['Gray Per Pale Inverted Banner'] = { pos = 2715, section = 2 },
['Gray Piglin Banner'] = { pos = 363, section = 2 },
['Gray Roundel Banner'] = { pos = 2716, section = 2 },
['Gray Saltire Banner'] = { pos = 2717, section = 2 },
['Gray Shield'] = { pos = 2509, section = 1 },
['Gray Shulker Box'] = { pos = 1607, section = 7 },
['Gray Shulker Box Revision 1'] = { pos = 1420, section = 40 },
['Gray Skull Charge Banner'] = { pos = 2718, section = 2 },
['Gray Snout Banner'] = { pos = 363, section = 2 },
['Gray Stained Glass'] = { pos = 731, section = 7 },
['Gray Stained Glass Pane'] = { pos = 732, section = 7 },
['Gray Stained Glass Pane BE'] = { pos = 2012, section = 7 },
['Gray Terracotta'] = { pos = 730, section = 7 },
['Gray Thing Banner'] = { pos = 2719, section = 2 },
['Gray Tinted Glass'] = { pos = 1299, section = 40 },
['Gray Tinted Glass Pane'] = { pos = 7, section = 40 },
['Gray Wood Planks'] = { pos = 248, section = 30 },
['Gray Wool'] = { pos = 1527, section = 7 },
['Gray Wool Revision 2'] = { pos = 733, section = 40 },
['Green Balloon'] = { pos = 1935, section = 33 },
['Green Banner'] = { pos = 734, section = 7 },
['Green Banner 15w14a'] = { pos = 477, section = 32 },
['Green Base Banner'] = { pos = 2720, section = 2 },
['Green Base Dexter Canton Banner'] = { pos = 2721, section = 2 },
['Green Base Gradient Banner'] = { pos = 2722, section = 2 },
['Green Base Indented Banner'] = { pos = 2723, section = 2 },
['Green Base Sinister Canton Banner'] = { pos = 2724, section = 2 },
['Green Beaker'] = { pos = 1895, section = 35 },
['Green Bed'] = { pos = 3176, section = 7 },
['Green Bed BE'] = { pos = 1550, section = 7 },
['Green Bed LCE'] = { pos = 1550, section = 7 },
['Green Bend Banner'] = { pos = 2725, section = 2 },
['Green Bend Sinister Banner'] = { pos = 2726, section = 2 },
['Green Bordure Banner'] = { pos = 2727, section = 2 },
['Green Bordure Indented Banner'] = { pos = 2728, section = 2 },
['Green Candle'] = { pos = 407, section = 7 },
['Green Carpet'] = { pos = 1626, section = 7 },
['Green Carpet Revision 1'] = { pos = 735, section = 40 },
['Green Chevron Banner'] = { pos = 2729, section = 2 },
['Green Chief Banner'] = { pos = 2730, section = 2 },
['Green Chief Dexter Canton Banner'] = { pos = 2731, section = 2 },
['Green Chief Indented Banner'] = { pos = 2732, section = 2 },
['Green Chief Sinister Canton Banner'] = { pos = 2733, section = 2 },
['Green Cloth'] = { pos = 231, section = 40 },
['Green Concrete'] = { pos = 1490, section = 7 },
['Green Concrete Powder'] = { pos = 1491, section = 7 },
['Green Creeper Charge Banner'] = { pos = 2734, section = 2 },
['Green Cross Banner'] = { pos = 2735, section = 2 },
['Green Dye'] = { pos = 3159, section = 6 },
['Green Fess Banner'] = { pos = 2736, section = 2 },
['Green Field Masoned Banner'] = { pos = 2737, section = 2 },
['Green Firework Star'] = { pos = 811, section = 9 },
['Green Flask'] = { pos = 1908, section = 36 },
['Green Flower Charge Banner'] = { pos = 2738, section = 2 },
['Green Glazed Terracotta'] = { pos = 1492, section = 7 },
['Green Globe Banner'] = { pos = 41, section = 2 },
['Green Glow Stick'] = { pos = 1981, section = 33 },
['Green Gradient Banner'] = { pos = 2739, section = 2 },
['Green Inverted Chevron Banner'] = { pos = 2740, section = 2 },
['Green Jar'] = { pos = 1920, section = 37 },
['Green Lozenge Banner'] = { pos = 2741, section = 2 },
['Green Pale Banner'] = { pos = 2742, section = 2 },
['Green Pale Dexter Banner'] = { pos = 2743, section = 2 },
['Green Pale Sinister Banner'] = { pos = 2744, section = 2 },
['Green Paly Banner'] = { pos = 2745, section = 2 },
['Green Per Bend Banner'] = { pos = 2746, section = 2 },
['Green Per Bend Inverted Banner'] = { pos = 2747, section = 2 },
['Green Per Bend Sinister Banner'] = { pos = 2748, section = 2 },
['Green Per Bend Sinister Inverted Banner'] = { pos = 2749, section = 2 },
['Green Per Fess Banner'] = { pos = 2750, section = 2 },
['Green Per Fess Inverted Banner'] = { pos = 2751, section = 2 },
['Green Per Pale Banner'] = { pos = 2752, section = 2 },
['Green Per Pale Inverted Banner'] = { pos = 2753, section = 2 },
['Green Piglin Banner'] = { pos = 364, section = 2 },
['Green Roundel Banner'] = { pos = 2754, section = 2 },
['Green Saltire Banner'] = { pos = 2755, section = 2 },
['Green Shield'] = { pos = 2510, section = 1 },
['Green Shulker Box'] = { pos = 1608, section = 7 },
['Green Shulker Box Revision 1'] = { pos = 1421, section = 40 },
['Green Skull Charge Banner'] = { pos = 2756, section = 2 },
['Green Snout Banner'] = { pos = 364, section = 2 },
['Green Sparkler'] = { pos = 1754, section = 33 },
['Green Sparkler (active)'] = { pos = 1755, section = 33 },
['Green Stained Glass'] = { pos = 737, section = 7 },
['Green Stained Glass Pane'] = { pos = 738, section = 7 },
['Green Stained Glass Pane BE'] = { pos = 2013, section = 7 },
['Green Terracotta'] = { pos = 736, section = 7 },
['Green Thing Banner'] = { pos = 2757, section = 2 },
['Green Tinted Glass'] = { pos = 1300, section = 40 },
['Green Tinted Glass Pane'] = { pos = 8, section = 40 },
['Green Torch'] = { pos = 1756, section = 33 },
['Green Wood Planks'] = { pos = 249, section = 30 },
['Green Wool'] = { pos = 1528, section = 7 },
['Green Wool Revision 2'] = { pos = 739, section = 40 },
Grindstone = { pos = 2461, section = 26 },
['Grindstone Revision 1'] = { pos = 2445, section = 26 },
['Guardian Spawn Egg'] = { pos = 1151, section = 24 },
Gunpowder = { pos = 3516, section = 23 },
Hafnium = { pos = 1813, section = 34 },
['Half Filled Bundle'] = { pos = 430, section = 25 },
Halogen = { pos = 69, section = 34 },
['Hanging Roots'] = { pos = 469, section = 19 },
['Hardened Black Stained Glass'] = { pos = 1950, section = 33 },
['Hardened Black Stained Glass Pane'] = { pos = 1982, section = 33 },
['Hardened Blue Stained Glass'] = { pos = 1951, section = 33 },
['Hardened Blue Stained Glass Pane'] = { pos = 1983, section = 33 },
['Hardened Brown Stained Glass'] = { pos = 1952, section = 33 },
['Hardened Brown Stained Glass Pane'] = { pos = 1984, section = 33 },
['Hardened Cyan Stained Glass'] = { pos = 1953, section = 33 },
['Hardened Cyan Stained Glass Pane'] = { pos = 1985, section = 33 },
['Hardened Glass'] = { pos = 1954, section = 33 },
['Hardened Glass Pane'] = { pos = 1986, section = 33 },
['Hardened Gray Stained Glass'] = { pos = 1955, section = 33 },
['Hardened Gray Stained Glass Pane'] = { pos = 1987, section = 33 },
['Hardened Green Stained Glass'] = { pos = 1956, section = 33 },
['Hardened Green Stained Glass Pane'] = { pos = 1988, section = 33 },
['Hardened Light Blue Stained Glass'] = { pos = 1957, section = 33 },
['Hardened Light Blue Stained Glass Pane'] = { pos = 1989, section = 33 },
['Hardened Light Gray Stained Glass'] = { pos = 1958, section = 33 },
['Hardened Light Gray Stained Glass Pane'] = { pos = 1990, section = 33 },
['Hardened Lime Stained Glass'] = { pos = 1959, section = 33 },
['Hardened Lime Stained Glass Pane'] = { pos = 1991, section = 33 },
['Hardened Magenta Stained Glass'] = { pos = 1960, section = 33 },
['Hardened Magenta Stained Glass Pane'] = { pos = 1992, section = 33 },
['Hardened Orange Stained Glass'] = { pos = 1961, section = 33 },
['Hardened Orange Stained Glass Pane'] = { pos = 1993, section = 33 },
['Hardened Pink Stained Glass'] = { pos = 1962, section = 33 },
['Hardened Pink Stained Glass Pane'] = { pos = 1994, section = 33 },
['Hardened Purple Stained Glass'] = { pos = 1963, section = 33 },
['Hardened Purple Stained Glass Pane'] = { pos = 1995, section = 33 },
['Hardened Red Stained Glass'] = { pos = 1964, section = 33 },
['Hardened Red Stained Glass Pane'] = { pos = 1996, section = 33 },
['Hardened White Stained Glass'] = { pos = 1965, section = 33 },
['Hardened White Stained Glass Pane'] = { pos = 1997, section = 33 },
['Hardened Yellow Stained Glass'] = { pos = 1966, section = 33 },
['Hardened Yellow Stained Glass Pane'] = { pos = 1998, section = 33 },
Hassium = { pos = 1814, section = 34 },
['Hay Bale'] = { pos = 3264, section = 12 },
Head = { pos = 966, section = 14 },
['Head BE'] = { pos = 217, section = 14 },
['Heart of the Sea'] = { pos = 1742, section = 23 },
['Heart of the Sea Revision 1'] = { pos = 1975, section = 29 },
['Heart Pottery Sherd'] = { pos = 1227, section = 44 },
['Heartbreak Pottery Sherd'] = { pos = 1228, section = 44 },
['Heavy Weighted Pressure Plate'] = { pos = 3335, section = 13 },
['Heavy Weighted Pressure Plate Revision 1'] = { pos = 2075, section = 29 },
Helium = { pos = 1815, section = 34 },
['Hoglin Spawn Egg'] = { pos = 194, section = 24 },
['Hoglin Spawn Egg Revision 1'] = { pos = 1169, section = 29 },
Holmium = { pos = 1816, section = 34 },
['Honey Block'] = { pos = 107, section = 12 },
['Honey Block BE'] = { pos = 98, section = 12 },
['Honey Block BE Revision 1'] = { pos = 101, section = 29 },
['Honey Block Revision 1'] = { pos = 98, section = 12 },
['Honey Bottle'] = { pos = 61, section = 10 },
['Honey Bottle BE'] = { pos = 102, section = 10 },
Honeycomb = { pos = 62, section = 23 },
['Honeycomb BE Revision 1'] = { pos = 103, section = 29 },
['Honeycomb Block'] = { pos = 99, section = 12 },
Hopper = { pos = 3608, section = 26 },
['Hopper Revision 2'] = { pos = 358, section = 29 },
Horn = { pos = 93, section = 38 },
['Horn Coral'] = { pos = 1715, section = 15 },
['Horn Coral Block'] = { pos = 1710, section = 15 },
['Horn Coral Block BE'] = { pos = 1973, section = 15 },
['Horn Coral Block Revision 1'] = { pos = 1705, section = 29 },
['Horn Coral Fan'] = { pos = 2134, section = 15 },
['Horn Coral Fan Revision 1'] = { pos = 1726, section = 29 },
['Horn Coral Fan Revision 2'] = { pos = 2141, section = 29 },
['Horned Sheep Spawn Egg'] = { pos = 625, section = 38 },
['Horse Saddle'] = { pos = 2465, section = 30 },
['Horse Spawn Egg'] = { pos = 1152, section = 24 },
['Host Armor Trim'] = { pos = 1214, section = 41 },
['Host Armor Trim Smithing Template'] = { pos = 1214, section = 41 },
['Howl Pottery Sherd'] = { pos = 1229, section = 44 },
['Husk Spawn Egg'] = { pos = 1373, section = 24 },
['Husk Spawn Egg Revision 1'] = { pos = 1563, section = 39 },
Hydrargyrum = { pos = 1817, section = 34 },
Hydrogen = { pos = 1818, section = 34 },
['Hydrogen Peroxide'] = { pos = 1889, section = 35 },
Ice = { pos = 3366, section = 15 },
['Ice Bomb'] = { pos = 1757, section = 33 },
['Impulse Command Block Revision 1'] = { pos = 1240, section = 29 },
['Indigo Beaker'] = { pos = 1896, section = 35 },
['Indigo Flask'] = { pos = 1909, section = 36 },
['Indigo Jar'] = { pos = 1921, section = 37 },
Indium = { pos = 1819, section = 34 },
['Infested Chiseled Stone Bricks'] = { pos = 3357, section = 15 },
['Infested Cobblestone'] = { pos = 3359, section = 12 },
['Infested Cracked Stone Bricks'] = { pos = 3361, section = 15 },
['Infested Deepslate'] = { pos = 503, section = 15 },
['Infested Mossy Stone Bricks'] = { pos = 3368, section = 15 },
['Infested Stone'] = { pos = 1000, section = 15 },
['Infested Stone Bricks'] = { pos = 3380, section = 15 },
['Initialized Nether Reactor Core'] = { pos = 1600, section = 20 },
['Initialized Nether Reactor Core Revision 1'] = { pos = 1597, section = 29 },
['Ink Sac'] = { pos = 3160, section = 6 },
['Int Tag'] = { pos = 1254, section = 32 },
['Inverted Daylight Detector'] = { pos = 1249, section = 26 },
['Inverted Daylight Sensor'] = { pos = 1249, section = 26 },
['Invisible Bedrock'] = { pos = 2151, section = 26 },
Iodine = { pos = 1820, section = 34 },
Iridium = { pos = 1821, section = 34 },
Iron = { pos = 1806, section = 34 },
['Iron Axe'] = { pos = 3574, section = 25 },
['Iron Bars'] = { pos = 3265, section = 12 },
['Iron Bars BE'] = { pos = 2026, section = 12 },
['Iron Boots'] = { pos = 2511, section = 1 },
['Iron Chestplate'] = { pos = 2512, section = 1 },
['Iron Door'] = { pos = 569, section = 13 },
['Iron Door Revision 2'] = { pos = 941, section = 13 },
['Iron Golem Spawn Egg'] = { pos = 696, section = 24 },
['Iron Heart'] = { pos = 120, section = 32 },
['Iron Helmet'] = { pos = 2513, section = 1 },
['Iron Hoe'] = { pos = 3575, section = 25 },
['Iron Horse Armor'] = { pos = 39, section = 1 },
['Iron Ingot'] = { pos = 3517, section = 23 },
['Iron Leggings'] = { pos = 2514, section = 1 },
['Iron Nugget'] = { pos = 3518, section = 23 },
['Iron Ore'] = { pos = 3395, section = 18 },
['Iron Pickaxe'] = { pos = 3576, section = 25 },
['Iron Shovel'] = { pos = 3577, section = 25 },
['Iron Sulfide'] = { pos = 1916, section = 37 },
['Iron Sword'] = { pos = 3637, section = 28 },
['Iron Trapdoor'] = { pos = 942, section = 13 },
['Iron Trim Chainmail Boots'] = { pos = 1008, section = 43 },
['Iron Trim Chainmail Chestplate'] = { pos = 1009, section = 43 },
['Iron Trim Chainmail Helmet'] = { pos = 1012, section = 43 },
['Iron Trim Chainmail Leggings'] = { pos = 1013, section = 43 },
['Iron Trim Diamond Boots'] = { pos = 1014, section = 43 },
['Iron Trim Diamond Chestplate'] = { pos = 1015, section = 43 },
['Iron Trim Diamond Helmet'] = { pos = 1016, section = 43 },
['Iron Trim Diamond Leggings'] = { pos = 1017, section = 43 },
['Iron Trim Golden Boots'] = { pos = 1018, section = 43 },
['Iron Trim Golden Chestplate'] = { pos = 1019, section = 43 },
['Iron Trim Golden Helmet'] = { pos = 1020, section = 43 },
['Iron Trim Golden Leggings'] = { pos = 1021, section = 43 },
['Iron Trim Iron Boots'] = { pos = 1022, section = 43 },
['Iron Trim Iron Chestplate'] = { pos = 1023, section = 43 },
['Iron Trim Iron Helmet'] = { pos = 1024, section = 43 },
['Iron Trim Iron Leggings'] = { pos = 1025, section = 43 },
['Iron Trim Leather Boots'] = { pos = 1026, section = 43 },
['Iron Trim Leather Cap'] = { pos = 1027, section = 43 },
['Iron Trim Leather Pants'] = { pos = 1028, section = 43 },
['Iron Trim Leather Tunic'] = { pos = 1029, section = 43 },
['Iron Trim Netherite Boots'] = { pos = 1030, section = 43 },
['Iron Trim Netherite Chestplate'] = { pos = 1031, section = 43 },
['Iron Trim Netherite Helmet'] = { pos = 1032, section = 43 },
['Iron Trim Netherite Leggings'] = { pos = 1033, section = 43 },
['Iron Trim Turtle Shell'] = { pos = 1034, section = 43 },
['Item Frame'] = { pos = 3152, section = 5 },
["Jack o'Lantern"] = { pos = 3266, section = 12 },
["Jack o'Lantern BE"] = { pos = 221, section = 12 },
Jar = { pos = 1922, section = 37 },
Jigsaw = { pos = 291, section = 26 },
['Jigsaw BE'] = { pos = 291, section = 26 },
['Jigsaw Block'] = { pos = 291, section = 26 },
['Jigsaw Block BE'] = { pos = 291, section = 26 },
['Jigsaw Block Revision 1'] = { pos = 2450, section = 29 },
['Jigsaw Block Revision 2'] = { pos = 2458, section = 29 },
['Jigsaw Revision 1'] = { pos = 2450, section = 29 },
['Jigsaw Revision 2'] = { pos = 2458, section = 29 },
Jukebox = { pos = 3609, section = 26 },
['Jumbo Rabbit Spawn Egg'] = { pos = 626, section = 38 },
['Jungle Boat'] = { pos = 636, section = 27 },
['Jungle Boat Revision 2'] = { pos = 3621, section = 29 },
['Jungle Boat with Chest'] = { pos = 615, section = 27 },
['Jungle Button'] = { pos = 3336, section = 13 },
['Jungle Door'] = { pos = 570, section = 13 },
['Jungle Door Revision 3'] = { pos = 551, section = 29 },
['Jungle Explorer Map'] = { pos = 1326, section = 25 },
['Jungle Explorer Map BE'] = { pos = 1327, section = 25 },
['Jungle Fence'] = { pos = 644, section = 12 },
['Jungle Fence BE'] = { pos = 3268, section = 12 },
['Jungle Fence Gate'] = { pos = 3267, section = 13 },
['Jungle Fence Gate BE'] = { pos = 55, section = 13 },
['Jungle Hanging Sign'] = { pos = 656, section = 5 },
['Jungle Leaves'] = { pos = 3421, section = 19 },
['Jungle Leaves BE'] = { pos = 112, section = 19 },
['Jungle Log'] = { pos = 3422, section = 19 },
['Jungle Log Revision 1'] = { pos = 2240, section = 29 },
['Jungle Planks'] = { pos = 896, section = 12 },
['Jungle Pressure Plate'] = { pos = 3337, section = 13 },
['Jungle Sapling'] = { pos = 3423, section = 19 },
['Jungle Sign'] = { pos = 2395, section = 17 },
['Jungle Slab'] = { pos = 3269, section = 12 },
['Jungle Stairs'] = { pos = 3270, section = 12 },
['Jungle Stairs Left'] = { pos = 2259, section = 42 },
['Jungle Trapdoor'] = { pos = 1649, section = 13 },
['Jungle Wood'] = { pos = 3271, section = 12 },
['Jungle Wood Button'] = { pos = 3336, section = 13 },
['Jungle Wood Door'] = { pos = 570, section = 13 },
['Jungle Wood Fence'] = { pos = 644, section = 12 },
['Jungle Wood Fence Gate'] = { pos = 3267, section = 13 },
['Jungle Wood Planks'] = { pos = 896, section = 12 },
['Jungle Wood Pressure Plate'] = { pos = 3337, section = 13 },
['Jungle Wood Sign'] = { pos = 2395, section = 17 },
['Jungle Wood Slab'] = { pos = 3269, section = 12 },
['Jungle Wood Stairs'] = { pos = 3270, section = 12 },
['Jungle Wood Trapdoor'] = { pos = 1649, section = 13 },
Kalium = { pos = 1822, section = 34 },
Kelp = { pos = 1683, section = 19 },
['Kelp Revision 1'] = { pos = 1976, section = 29 },
['Knowledge Book'] = { pos = 3610, section = 26 },
Krypton = { pos = 1823, section = 34 },
['La Baguette'] = { pos = 1318, section = 32 },
['Lab Table'] = { pos = 1936, section = 33 },
Ladder = { pos = 3272, section = 12 },
Lantern = { pos = 2451, section = 26 },
Lanthanide = { pos = 70, section = 34 },
Lanthanum = { pos = 1824, section = 34 },
['Lapis Lazuli'] = { pos = 3161, section = 6 },
['Lapis Lazuli Block'] = { pos = 3273, section = 12 },
['Lapis Lazuli Block Revision 1'] = { pos = 2241, section = 29 },
['Lapis Lazuli Ore'] = { pos = 3396, section = 18 },
['Lapis Trim Chainmail Boots'] = { pos = 1035, section = 43 },
['Lapis Trim Chainmail Chestplate'] = { pos = 1036, section = 43 },
['Lapis Trim Chainmail Helmet'] = { pos = 1037, section = 43 },
['Lapis Trim Chainmail Leggings'] = { pos = 1038, section = 43 },
['Lapis Trim Diamond Boots'] = { pos = 1040, section = 43 },
['Lapis Trim Diamond Chestplate'] = { pos = 1041, section = 43 },
['Lapis Trim Diamond Helmet'] = { pos = 1042, section = 43 },
['Lapis Trim Diamond Leggings'] = { pos = 1043, section = 43 },
['Lapis Trim Golden Boots'] = { pos = 1044, section = 43 },
['Lapis Trim Golden Chestplate'] = { pos = 1045, section = 43 },
['Lapis Trim Golden Helmet'] = { pos = 1046, section = 43 },
['Lapis Trim Golden Leggings'] = { pos = 1047, section = 43 },
['Lapis Trim Iron Boots'] = { pos = 1048, section = 43 },
['Lapis Trim Iron Chestplate'] = { pos = 1049, section = 43 },
['Lapis Trim Iron Helmet'] = { pos = 1051, section = 43 },
['Lapis Trim Iron Leggings'] = { pos = 1052, section = 43 },
['Lapis Trim Leather Boots'] = { pos = 1053, section = 43 },
['Lapis Trim Leather Cap'] = { pos = 1054, section = 43 },
['Lapis Trim Leather Pants'] = { pos = 1055, section = 43 },
['Lapis Trim Leather Tunic'] = { pos = 1056, section = 43 },
['Lapis Trim Netherite Boots'] = { pos = 1057, section = 43 },
['Lapis Trim Netherite Chestplate'] = { pos = 1058, section = 43 },
['Lapis Trim Netherite Helmet'] = { pos = 1059, section = 43 },
['Lapis Trim Netherite Leggings'] = { pos = 1060, section = 43 },
['Lapis Trim Turtle Shell'] = { pos = 1062, section = 43 },
['Large Amethyst Bud'] = { pos = 408, section = 15 },
['Large Fern'] = { pos = 3424, section = 19 },
Latex = { pos = 1897, section = 35 },
Lava = { pos = 2129, section = 11 },
['Lava BE Revision 2'] = { pos = 2130, section = 29 },
['Lava Block'] = { pos = 2119, section = 29 },
['Lava Bucket'] = { pos = 3147, section = 4 },
Lawrencium = { pos = 1825, section = 34 },
['Le Tricolore'] = { pos = 1319, section = 32 },
Lead = { pos = 3578, section = 25 },
['Lead (element)'] = { pos = 1826, section = 34 },
Leather = { pos = 3519, section = 23 },
['Leather Boots'] = { pos = 2515, section = 1 },
['Leather Boots Revision 1'] = { pos = 2076, section = 29 },
['Leather Boots Revision 2'] = { pos = 2077, section = 29 },
['Leather Cap'] = { pos = 2516, section = 1 },
['Leather Cap Revision 1'] = { pos = 2078, section = 29 },
['Leather Cap Revision 2'] = { pos = 2079, section = 29 },
['Leather Horse Armor'] = { pos = 1382, section = 1 },
['Leather Horse Armor BE'] = { pos = 378, section = 1 },
['Leather Pants'] = { pos = 2517, section = 1 },
['Leather Pants Revision 1'] = { pos = 2080, section = 29 },
['Leather Pants Revision 2'] = { pos = 2081, section = 29 },
['Leather Tunic'] = { pos = 2518, section = 1 },
['Leather Tunic Revision 1'] = { pos = 2082, section = 29 },
['Leather Tunic Revision 2'] = { pos = 2083, section = 29 },
Lectern = { pos = 19, section = 13 },
['Lectern Revision 1'] = { pos = 2434, section = 29 },
['Left Curly'] = { pos = 1255, section = 32 },
['Left Square'] = { pos = 1256, section = 32 },
Lever = { pos = 3338, section = 13 },
['Light 0'] = { pos = 525, section = 26 },
['Light 1'] = { pos = 526, section = 26 },
['Light 10'] = { pos = 527, section = 26 },
['Light 11'] = { pos = 528, section = 26 },
['Light 12'] = { pos = 529, section = 26 },
['Light 13'] = { pos = 530, section = 26 },
['Light 14'] = { pos = 531, section = 26 },
['Light 15'] = { pos = 532, section = 26 },
['Light 2'] = { pos = 533, section = 26 },
['Light 3'] = { pos = 534, section = 26 },
['Light 4'] = { pos = 535, section = 26 },
['Light 5'] = { pos = 536, section = 26 },
['Light 6'] = { pos = 537, section = 26 },
['Light 7'] = { pos = 538, section = 26 },
['Light 8'] = { pos = 539, section = 26 },
['Light 9'] = { pos = 540, section = 26 },
['Light Block 0'] = { pos = 76, section = 26 },
['Light Block 1'] = { pos = 77, section = 26 },
['Light Block 10'] = { pos = 78, section = 26 },
['Light Block 11'] = { pos = 79, section = 26 },
['Light Block 12'] = { pos = 80, section = 26 },
['Light Block 13'] = { pos = 81, section = 26 },
['Light Block 14'] = { pos = 82, section = 26 },
['Light Block 15'] = { pos = 83, section = 26 },
['Light Block 2'] = { pos = 84, section = 26 },
['Light Block 3'] = { pos = 85, section = 26 },
['Light Block 4'] = { pos = 86, section = 26 },
['Light Block 5'] = { pos = 87, section = 26 },
['Light Block 6'] = { pos = 88, section = 26 },
['Light Block 7'] = { pos = 89, section = 26 },
['Light Block 8'] = { pos = 90, section = 26 },
['Light Block 9'] = { pos = 91, section = 26 },
['Light Blue Balloon'] = { pos = 1937, section = 33 },
['Light Blue Banner'] = { pos = 740, section = 7 },
['Light Blue Banner 15w14a'] = { pos = 478, section = 32 },
['Light Blue Base Banner'] = { pos = 2758, section = 2 },
['Light Blue Base Dexter Canton Banner'] = { pos = 2759, section = 2 },
['Light Blue Base Gradient Banner'] = { pos = 2760, section = 2 },
['Light Blue Base Indented Banner'] = { pos = 2761, section = 2 },
['Light Blue Base Sinister Canton Banner'] = { pos = 2762, section = 2 },
['Light Blue Bed'] = { pos = 3177, section = 7 },
['Light Blue Bed BE'] = { pos = 1551, section = 7 },
['Light Blue Bed LCE'] = { pos = 1551, section = 7 },
['Light Blue Bend Banner'] = { pos = 2763, section = 2 },
['Light Blue Bend Sinister Banner'] = { pos = 2764, section = 2 },
['Light Blue Bordure Banner'] = { pos = 2765, section = 2 },
['Light Blue Bordure Indented Banner'] = { pos = 2766, section = 2 },
['Light Blue Candle'] = { pos = 409, section = 7 },
['Light Blue Carpet'] = { pos = 1627, section = 7 },
['Light Blue Carpet Revision 1'] = { pos = 741, section = 40 },
['Light Blue Chevron Banner'] = { pos = 2767, section = 2 },
['Light Blue Chief Banner'] = { pos = 2768, section = 2 },
['Light Blue Chief Dexter Canton Banner'] = { pos = 2769, section = 2 },
['Light Blue Chief Indented Banner'] = { pos = 2770, section = 2 },
['Light Blue Chief Sinister Canton Banner'] = { pos = 2771, section = 2 },
['Light Blue Concrete'] = { pos = 1493, section = 7 },
['Light Blue Concrete Powder'] = { pos = 1494, section = 7 },
['Light Blue Creeper Charge Banner'] = { pos = 2772, section = 2 },
['Light Blue Cross Banner'] = { pos = 2773, section = 2 },
['Light Blue Dye'] = { pos = 3162, section = 6 },
['Light Blue Fess Banner'] = { pos = 2774, section = 2 },
['Light Blue Field Masoned Banner'] = { pos = 2775, section = 2 },
['Light Blue Firework Star'] = { pos = 812, section = 9 },
['Light Blue Flower Charge Banner'] = { pos = 2776, section = 2 },
['Light Blue Glazed Terracotta'] = { pos = 1495, section = 7 },
['Light Blue Globe Banner'] = { pos = 42, section = 2 },
['Light Blue Glow Stick'] = { pos = 1999, section = 33 },
['Light Blue Gradient Banner'] = { pos = 2777, section = 2 },
['Light Blue Inverted Chevron Banner'] = { pos = 2778, section = 2 },
['Light Blue Lozenge Banner'] = { pos = 2779, section = 2 },
['Light Blue Pale Banner'] = { pos = 2780, section = 2 },
['Light Blue Pale Dexter Banner'] = { pos = 2781, section = 2 },
['Light Blue Pale Sinister Banner'] = { pos = 2782, section = 2 },
['Light Blue Paly Banner'] = { pos = 2783, section = 2 },
['Light Blue Per Bend Banner'] = { pos = 2784, section = 2 },
['Light Blue Per Bend Inverted Banner'] = { pos = 2785, section = 2 },
['Light Blue Per Bend Sinister Banner'] = { pos = 2786, section = 2 },
['Light Blue Per Bend Sinister Inverted Banner'] = { pos = 2787, section = 2 },
['Light Blue Per Fess Banner'] = { pos = 2788, section = 2 },
['Light Blue Per Fess Inverted Banner'] = { pos = 2789, section = 2 },
['Light Blue Per Pale Banner'] = { pos = 2790, section = 2 },
['Light Blue Per Pale Inverted Banner'] = { pos = 2791, section = 2 },
['Light Blue Piglin Banner'] = { pos = 365, section = 2 },
['Light Blue Roundel Banner'] = { pos = 2792, section = 2 },
['Light Blue Saltire Banner'] = { pos = 2793, section = 2 },
['Light Blue Shield'] = { pos = 2519, section = 1 },
['Light Blue Shulker Box'] = { pos = 1609, section = 7 },
['Light Blue Shulker Box Revision 1'] = { pos = 1422, section = 40 },
['Light Blue Skull Charge Banner'] = { pos = 2794, section = 2 },
['Light Blue Snout Banner'] = { pos = 365, section = 2 },
['Light Blue Stained Glass'] = { pos = 743, section = 7 },
['Light Blue Stained Glass Pane'] = { pos = 744, section = 7 },
['Light Blue Stained Glass Pane BE'] = { pos = 2014, section = 7 },
['Light Blue Terracotta'] = { pos = 742, section = 7 },
['Light Blue Thing Banner'] = { pos = 2795, section = 2 },
['Light Blue Tinted Glass'] = { pos = 1302, section = 40 },
['Light Blue Tinted Glass Pane'] = { pos = 9, section = 40 },
['Light Blue Wood Planks'] = { pos = 250, section = 30 },
['Light Blue Wool'] = { pos = 1529, section = 7 },
['Light Blue Wool Revision 2'] = { pos = 745, section = 40 },
['Light Gray Balloon'] = { pos = 1945, section = 33 },
['Light Gray Banner'] = { pos = 746, section = 7 },
['Light Gray Banner 15w14a'] = { pos = 479, section = 32 },
['Light Gray Base Banner'] = { pos = 2796, section = 2 },
['Light Gray Base Dexter Canton Banner'] = { pos = 2797, section = 2 },
['Light Gray Base Gradient Banner'] = { pos = 2798, section = 2 },
['Light Gray Base Indented Banner'] = { pos = 2799, section = 2 },
['Light Gray Base Sinister Canton Banner'] = { pos = 2800, section = 2 },
['Light Gray Beaker'] = { pos = 1898, section = 35 },
['Light Gray Bed'] = { pos = 3178, section = 7 },
['Light Gray Bed BE'] = { pos = 1552, section = 7 },
['Light Gray Bed LCE'] = { pos = 1552, section = 7 },
['Light Gray Bend Banner'] = { pos = 2801, section = 2 },
['Light Gray Bend Sinister Banner'] = { pos = 2802, section = 2 },
['Light Gray Bordure Banner'] = { pos = 2803, section = 2 },
['Light Gray Bordure Indented Banner'] = { pos = 2804, section = 2 },
['Light Gray Candle'] = { pos = 410, section = 7 },
['Light Gray Carpet'] = { pos = 1628, section = 7 },
['Light Gray Carpet Revision 1'] = { pos = 747, section = 40 },
['Light Gray Chevron Banner'] = { pos = 2805, section = 2 },
['Light Gray Chief Banner'] = { pos = 2806, section = 2 },
['Light Gray Chief Dexter Canton Banner'] = { pos = 2807, section = 2 },
['Light Gray Chief Indented Banner'] = { pos = 2808, section = 2 },
['Light Gray Chief Sinister Canton Banner'] = { pos = 2809, section = 2 },
['Light Gray Cloth'] = { pos = 233, section = 40 },
['Light Gray Concrete'] = { pos = 1496, section = 7 },
['Light Gray Concrete Powder'] = { pos = 1497, section = 7 },
['Light Gray Creeper Charge Banner'] = { pos = 2810, section = 2 },
['Light Gray Cross Banner'] = { pos = 2811, section = 2 },
['Light Gray Dye'] = { pos = 3163, section = 6 },
['Light Gray Fess Banner'] = { pos = 2812, section = 2 },
['Light Gray Field Masoned Banner'] = { pos = 2813, section = 2 },
['Light Gray Firework Star'] = { pos = 813, section = 9 },
['Light Gray Flask'] = { pos = 1910, section = 36 },
['Light Gray Flower Charge Banner'] = { pos = 2814, section = 2 },
['Light Gray Glazed Terracotta'] = { pos = 1498, section = 7 },
['Light Gray Globe Banner'] = { pos = 43, section = 2 },
['Light Gray Gradient Banner'] = { pos = 2815, section = 2 },
['Light Gray Inverted Chevron Banner'] = { pos = 2816, section = 2 },
['Light Gray Jar'] = { pos = 1923, section = 37 },
['Light Gray Lozenge Banner'] = { pos = 2817, section = 2 },
['Light Gray Pale Banner'] = { pos = 2818, section = 2 },
['Light Gray Pale Dexter Banner'] = { pos = 2819, section = 2 },
['Light Gray Pale Sinister Banner'] = { pos = 2820, section = 2 },
['Light Gray Paly Banner'] = { pos = 2821, section = 2 },
['Light Gray Per Bend Banner'] = { pos = 2822, section = 2 },
['Light Gray Per Bend Inverted Banner'] = { pos = 2823, section = 2 },
['Light Gray Per Bend Sinister Banner'] = { pos = 2824, section = 2 },
['Light Gray Per Bend Sinister Inverted Banner'] = { pos = 2825, section = 2 },
['Light Gray Per Fess Banner'] = { pos = 2826, section = 2 },
['Light Gray Per Fess Inverted Banner'] = { pos = 2827, section = 2 },
['Light Gray Per Pale Banner'] = { pos = 2828, section = 2 },
['Light Gray Per Pale Inverted Banner'] = { pos = 2829, section = 2 },
['Light Gray Piglin Banner'] = { pos = 366, section = 2 },
['Light Gray Roundel Banner'] = { pos = 2830, section = 2 },
['Light Gray Saltire Banner'] = { pos = 2831, section = 2 },
['Light Gray Shield'] = { pos = 2520, section = 1 },
['Light Gray Shulker Box'] = { pos = 1610, section = 7 },
['Light Gray Shulker Box Revision 1'] = { pos = 1423, section = 40 },
['Light Gray Skull Charge Banner'] = { pos = 2832, section = 2 },
['Light Gray Snout Banner'] = { pos = 366, section = 2 },
['Light Gray Stained Glass'] = { pos = 749, section = 7 },
['Light Gray Stained Glass Pane'] = { pos = 750, section = 7 },
['Light Gray Stained Glass Pane BE'] = { pos = 2015, section = 7 },
['Light Gray Terracotta'] = { pos = 748, section = 7 },
['Light Gray Thing Banner'] = { pos = 2833, section = 2 },
['Light Gray Tinted Glass'] = { pos = 1303, section = 40 },
['Light Gray Tinted Glass Pane'] = { pos = 10, section = 40 },
['Light Gray Wood Planks'] = { pos = 251, section = 30 },
['Light Gray Wool'] = { pos = 1530, section = 7 },
['Light Gray Wool Revision 2'] = { pos = 751, section = 40 },
['Light Negative'] = { pos = 541, section = 26 },
['Light Weighted Pressure Plate'] = { pos = 3339, section = 13 },
['Light Weighted Pressure Plate Revision 1'] = { pos = 2084, section = 29 },
['Lightning Rod'] = { pos = 415, section = 26 },
Lilac = { pos = 3425, section = 19 },
['Lily of the Valley'] = { pos = 2390, section = 19 },
['Lily Pad'] = { pos = 3426, section = 19 },
['Lime Balloon'] = { pos = 1938, section = 33 },
['Lime Banner'] = { pos = 752, section = 7 },
['Lime Banner 15w14a'] = { pos = 480, section = 32 },
['Lime Base Banner'] = { pos = 2834, section = 2 },
['Lime Base Dexter Canton Banner'] = { pos = 2835, section = 2 },
['Lime Base Gradient Banner'] = { pos = 2836, section = 2 },
['Lime Base Indented Banner'] = { pos = 2837, section = 2 },
['Lime Base Sinister Canton Banner'] = { pos = 2838, section = 2 },
['Lime Bed'] = { pos = 3179, section = 7 },
['Lime Bed BE'] = { pos = 1553, section = 7 },
['Lime Bed LCE'] = { pos = 1553, section = 7 },
['Lime Bend Banner'] = { pos = 2839, section = 2 },
['Lime Bend Sinister Banner'] = { pos = 2840, section = 2 },
['Lime Bordure Banner'] = { pos = 2841, section = 2 },
['Lime Bordure Indented Banner'] = { pos = 2842, section = 2 },
['Lime Candle'] = { pos = 416, section = 7 },
['Lime Carpet'] = { pos = 1629, section = 7 },
['Lime Carpet Revision 1'] = { pos = 753, section = 40 },
['Lime Chevron Banner'] = { pos = 2843, section = 2 },
['Lime Chief Banner'] = { pos = 2844, section = 2 },
['Lime Chief Dexter Canton Banner'] = { pos = 2845, section = 2 },
['Lime Chief Indented Banner'] = { pos = 2846, section = 2 },
['Lime Chief Sinister Canton Banner'] = { pos = 2847, section = 2 },
['Lime Concrete'] = { pos = 1499, section = 7 },
['Lime Concrete Powder'] = { pos = 1500, section = 7 },
['Lime Creeper Charge Banner'] = { pos = 2848, section = 2 },
['Lime Cross Banner'] = { pos = 2849, section = 2 },
['Lime Dye'] = { pos = 3164, section = 6 },
['Lime Fess Banner'] = { pos = 2850, section = 2 },
['Lime Field Masoned Banner'] = { pos = 2851, section = 2 },
['Lime Firework Star'] = { pos = 814, section = 9 },
['Lime Flower Charge Banner'] = { pos = 2852, section = 2 },
['Lime Glazed Terracotta'] = { pos = 1501, section = 7 },
['Lime Globe Banner'] = { pos = 44, section = 2 },
['Lime Glow Stick'] = { pos = 2000, section = 33 },
['Lime Gradient Banner'] = { pos = 2853, section = 2 },
['Lime Inverted Chevron Banner'] = { pos = 2854, section = 2 },
['Lime Lozenge Banner'] = { pos = 2855, section = 2 },
['Lime Pale Banner'] = { pos = 2856, section = 2 },
['Lime Pale Dexter Banner'] = { pos = 2857, section = 2 },
['Lime Pale Sinister Banner'] = { pos = 2858, section = 2 },
['Lime Paly Banner'] = { pos = 2859, section = 2 },
['Lime Per Bend Banner'] = { pos = 2860, section = 2 },
['Lime Per Bend Inverted Banner'] = { pos = 2861, section = 2 },
['Lime Per Bend Sinister Banner'] = { pos = 2862, section = 2 },
['Lime Per Bend Sinister Inverted Banner'] = { pos = 2863, section = 2 },
['Lime Per Fess Banner'] = { pos = 2864, section = 2 },
['Lime Per Fess Inverted Banner'] = { pos = 2865, section = 2 },
['Lime Per Pale Banner'] = { pos = 2866, section = 2 },
['Lime Per Pale Inverted Banner'] = { pos = 2867, section = 2 },
['Lime Piglin Banner'] = { pos = 367, section = 2 },
['Lime Roundel Banner'] = { pos = 2868, section = 2 },
['Lime Saltire Banner'] = { pos = 2869, section = 2 },
['Lime Shield'] = { pos = 2521, section = 1 },
['Lime Shulker Box'] = { pos = 1611, section = 7 },
['Lime Shulker Box Revision 1'] = { pos = 1424, section = 40 },
['Lime Skull Charge Banner'] = { pos = 2870, section = 2 },
['Lime Snout Banner'] = { pos = 367, section = 2 },
['Lime Stained Glass'] = { pos = 755, section = 7 },
['Lime Stained Glass Pane'] = { pos = 756, section = 7 },
['Lime Stained Glass Pane BE'] = { pos = 2016, section = 7 },
['Lime Terracotta'] = { pos = 754, section = 7 },
['Lime Thing Banner'] = { pos = 2871, section = 2 },
['Lime Tinted Glass'] = { pos = 1304, section = 40 },
['Lime Tinted Glass Pane'] = { pos = 11, section = 40 },
['Lime Wood Planks'] = { pos = 252, section = 30 },
['Lime Wool'] = { pos = 1531, section = 7 },
['Lime Wool Revision 2'] = { pos = 757, section = 40 },
['Lingering Awkward Potion Revision 1'] = { pos = 312, section = 46 },
['Lingering Mundane Potion Revision 1'] = { pos = 313, section = 46 },
['Lingering Potion of Big'] = { pos = 1258, section = 32 },
['Lingering Potion of Decay'] = { pos = 1406, section = 31 },
['Lingering Potion of Fire Resistance'] = { pos = 3484, section = 31 },
['Lingering Potion of Fire Resistance Revision 1'] = { pos = 314, section = 46 },
['Lingering Potion of Harming'] = { pos = 3485, section = 31 },
['Lingering Potion of Harming Revision 1'] = { pos = 315, section = 46 },
['Lingering Potion of Healing'] = { pos = 3486, section = 31 },
['Lingering Potion of Healing Revision 1'] = { pos = 316, section = 46 },
['Lingering Potion of Invisibility'] = { pos = 3487, section = 31 },
['Lingering Potion of Invisibility Revision 1'] = { pos = 317, section = 46 },
['Lingering Potion of Leaping'] = { pos = 3488, section = 31 },
['Lingering Potion of Leaping Revision 1'] = { pos = 318, section = 46 },
['Lingering Potion of Levitation'] = { pos = 116, section = 31 },
['Lingering Potion of Luck'] = { pos = 3489, section = 31 },
['Lingering Potion of Luck Revision 1'] = { pos = 319, section = 46 },
['Lingering Potion of Night Vision'] = { pos = 3490, section = 31 },
['Lingering Potion of Night Vision Revision 1'] = { pos = 320, section = 46 },
['Lingering Potion of Poison'] = { pos = 3491, section = 31 },
['Lingering Potion of Poison Revision 1'] = { pos = 321, section = 46 },
['Lingering Potion of Regeneration'] = { pos = 3492, section = 31 },
['Lingering Potion of Regeneration Revision 1'] = { pos = 322, section = 46 },
['Lingering Potion of Slow Falling'] = { pos = 3493, section = 31 },
['Lingering Potion of Slow Falling Revision 1'] = { pos = 323, section = 46 },
['Lingering Potion of Slowness'] = { pos = 3494, section = 31 },
['Lingering Potion of Slowness Revision 1'] = { pos = 324, section = 46 },
['Lingering Potion of Small'] = { pos = 1260, section = 32 },
['Lingering Potion of Strength'] = { pos = 3495, section = 31 },
['Lingering Potion of Strength Revision 1'] = { pos = 325, section = 46 },
['Lingering Potion of Swiftness'] = { pos = 3496, section = 31 },
['Lingering Potion of Swiftness Revision 1'] = { pos = 326, section = 46 },
['Lingering Potion of the Turtle Master'] = { pos = 3497, section = 31 },
['Lingering Potion of the Turtle Master Revision 1'] = { pos = 327, section = 46 },
['Lingering Potion of Water Breathing'] = { pos = 3498, section = 31 },
['Lingering Potion of Water Breathing Revision 1'] = { pos = 328, section = 46 },
['Lingering Potion of Weakness'] = { pos = 3499, section = 31 },
['Lingering Thick Potion Revision 1'] = { pos = 329, section = 46 },
['Lingering Uncraftable Potion Revision 1'] = { pos = 330, section = 46 },
['Lingering Water Bottle'] = { pos = 3501, section = 31 },
['Lingering Water Bottle Revision 1'] = { pos = 331, section = 46 },
['List Tag'] = { pos = 1261, section = 32 },
['Lit Deepslate Redstone Ore BE'] = { pos = 565, section = 18 },
['Lit Redstone Lamp Post-Flip'] = { pos = 380, section = 29 },
['Lit Redstone Ore'] = { pos = 2171, section = 29 },
['Lit Redstone Ore BE'] = { pos = 564, section = 18 },
Lithium = { pos = 1827, section = 34 },
['Lithium Hydride'] = { pos = 1915, section = 37 },
Livermorium = { pos = 1828, section = 34 },
['Llama Spawn Egg'] = { pos = 1412, section = 24 },
['Locked chest'] = { pos = 1251, section = 29 },
['Locked Chest 12w19a'] = { pos = 1317, section = 30 },
['Locked Chest 12w22a'] = { pos = 1305, section = 30 },
['Locked Chest 13w01a'] = { pos = 553, section = 30 },
['Locked Chest 13w03a'] = { pos = 554, section = 30 },
['Locked Chest 13w18a'] = { pos = 1306, section = 30 },
['Locked Map'] = { pos = 131, section = 25 },
Lodestone = { pos = 222, section = 12 },
['Lodestone Compass'] = { pos = 577, section = 25 },
['Lodestone-Compass'] = { pos = 577, section = 25 },
['Long Tag'] = { pos = 1262, section = 32 },
['Longer String'] = { pos = 1322, section = 32 },
Loom = { pos = 2446, section = 26 },
['Loom Revision 1'] = { pos = 20, section = 26 },
Luminol = { pos = 1922, section = 37 },
Lutetium = { pos = 1829, section = 34 },
Lye = { pos = 1915, section = 37 },
['Magenta Balloon'] = { pos = 1939, section = 33 },
['Magenta Banner'] = { pos = 758, section = 7 },
['Magenta Banner 15w14a'] = { pos = 481, section = 32 },
['Magenta Base Banner'] = { pos = 2872, section = 2 },
['Magenta Base Dexter Canton Banner'] = { pos = 2873, section = 2 },
['Magenta Base Gradient Banner'] = { pos = 2874, section = 2 },
['Magenta Base Indented Banner'] = { pos = 2875, section = 2 },
['Magenta Base Sinister Canton Banner'] = { pos = 2876, section = 2 },
['Magenta Bed'] = { pos = 3180, section = 7 },
['Magenta Bed BE'] = { pos = 1554, section = 7 },
['Magenta Bed LCE'] = { pos = 1554, section = 7 },
['Magenta Bend Banner'] = { pos = 2877, section = 2 },
['Magenta Bend Sinister Banner'] = { pos = 2878, section = 2 },
['Magenta Bordure Banner'] = { pos = 2879, section = 2 },
['Magenta Bordure Indented Banner'] = { pos = 2880, section = 2 },
['Magenta Candle'] = { pos = 417, section = 7 },
['Magenta Carpet'] = { pos = 1630, section = 7 },
['Magenta Carpet Revision 1'] = { pos = 759, section = 40 },
['Magenta Chevron Banner'] = { pos = 2881, section = 2 },
['Magenta Chief Banner'] = { pos = 2882, section = 2 },
['Magenta Chief Dexter Canton Banner'] = { pos = 2883, section = 2 },
['Magenta Chief Indented Banner'] = { pos = 2884, section = 2 },
['Magenta Chief Sinister Canton Banner'] = { pos = 2885, section = 2 },
['Magenta Cloth'] = { pos = 235, section = 40 },
['Magenta Concrete'] = { pos = 1502, section = 7 },
['Magenta Concrete Powder'] = { pos = 1503, section = 7 },
['Magenta Creeper Charge Banner'] = { pos = 2886, section = 2 },
['Magenta Cross Banner'] = { pos = 2887, section = 2 },
['Magenta Dye'] = { pos = 3165, section = 6 },
['Magenta Fess Banner'] = { pos = 2888, section = 2 },
['Magenta Field Masoned Banner'] = { pos = 2889, section = 2 },
['Magenta Firework Star'] = { pos = 815, section = 9 },
['Magenta Flower Charge Banner'] = { pos = 2890, section = 2 },
['Magenta Glazed Terracotta'] = { pos = 1541, section = 7 },
['Magenta Glazed Terracotta Revision 1'] = { pos = 1504, section = 40 },
['Magenta Globe Banner'] = { pos = 45, section = 2 },
['Magenta Glow Stick'] = { pos = 2001, section = 33 },
['Magenta Gradient Banner'] = { pos = 2891, section = 2 },
['Magenta Inverted Chevron Banner'] = { pos = 2892, section = 2 },
['Magenta Lozenge Banner'] = { pos = 2893, section = 2 },
['Magenta Pale Banner'] = { pos = 2894, section = 2 },
['Magenta Pale Dexter Banner'] = { pos = 2895, section = 2 },
['Magenta Pale Sinister Banner'] = { pos = 2896, section = 2 },
['Magenta Paly Banner'] = { pos = 2897, section = 2 },
['Magenta Per Bend Banner'] = { pos = 2898, section = 2 },
['Magenta Per Bend Inverted Banner'] = { pos = 2899, section = 2 },
['Magenta Per Bend Sinister Banner'] = { pos = 2900, section = 2 },
['Magenta Per Bend Sinister Inverted Banner'] = { pos = 2901, section = 2 },
['Magenta Per Fess Banner'] = { pos = 2902, section = 2 },
['Magenta Per Fess Inverted Banner'] = { pos = 2903, section = 2 },
['Magenta Per Pale Banner'] = { pos = 2904, section = 2 },
['Magenta Per Pale Inverted Banner'] = { pos = 2905, section = 2 },
['Magenta Piglin Banner'] = { pos = 368, section = 2 },
['Magenta Roundel Banner'] = { pos = 2906, section = 2 },
['Magenta Saltire Banner'] = { pos = 2907, section = 2 },
['Magenta Shield'] = { pos = 2522, section = 1 },
['Magenta Shulker Box'] = { pos = 1612, section = 7 },
['Magenta Shulker Box Revision 1'] = { pos = 1425, section = 40 },
['Magenta Skull Charge Banner'] = { pos = 2908, section = 2 },
['Magenta Snout Banner'] = { pos = 368, section = 2 },
['Magenta Stained Glass'] = { pos = 761, section = 7 },
['Magenta Stained Glass Pane'] = { pos = 762, section = 7 },
['Magenta Stained Glass Pane BE'] = { pos = 2017, section = 7 },
['Magenta Terracotta'] = { pos = 760, section = 7 },
['Magenta Thing Banner'] = { pos = 2909, section = 2 },
['Magenta Tinted Glass'] = { pos = 1307, section = 40 },
['Magenta Tinted Glass Pane'] = { pos = 12, section = 40 },
['Magenta Wood Planks'] = { pos = 253, section = 30 },
['Magenta Wool'] = { pos = 1532, section = 7 },
['Magenta Wool Revision 2'] = { pos = 763, section = 40 },
['Magma Block BE'] = { pos = 510, section = 16 },
['Magma Cream'] = { pos = 3143, section = 3 },
['Magma Cube Spawn Egg'] = { pos = 1153, section = 24 },
['Magma Cube Spawn Egg Revision 1'] = { pos = 1389, section = 39 },
Magnesium = { pos = 1830, section = 34 },
['Magnesium Nitrate'] = { pos = 1924, section = 37 },
['Magnesium Oxide'] = { pos = 1915, section = 37 },
Manganese = { pos = 1831, section = 34 },
['Mangrove Boat'] = { pos = 639, section = 27 },
['Mangrove Boat with Chest'] = { pos = 618, section = 27 },
['Mangrove Button'] = { pos = 599, section = 13 },
['Mangrove Door'] = { pos = 600, section = 13 },
['Mangrove Fence'] = { pos = 647, section = 12 },
['Mangrove Fence BE'] = { pos = 585, section = 12 },
['Mangrove Fence Gate'] = { pos = 586, section = 12 },
['Mangrove Hanging Sign'] = { pos = 657, section = 5 },
['Mangrove Leaves'] = { pos = 605, section = 19 },
['Mangrove Log'] = { pos = 606, section = 19 },
['Mangrove Planks'] = { pos = 587, section = 12 },
['Mangrove Pressure Plate'] = { pos = 601, section = 13 },
['Mangrove Propagule'] = { pos = 607, section = 19 },
['Mangrove Roots'] = { pos = 608, section = 19 },
['Mangrove Sign'] = { pos = 604, section = 17 },
['Mangrove Slab'] = { pos = 588, section = 12 },
['Mangrove Stairs'] = { pos = 589, section = 12 },
['Mangrove Trapdoor'] = { pos = 602, section = 13 },
['Mangrove Wood'] = { pos = 590, section = 12 },
['Mangrove Wood Button'] = { pos = 599, section = 13 },
['Mangrove Wood Door'] = { pos = 600, section = 13 },
['Mangrove Wood Fence'] = { pos = 647, section = 12 },
['Mangrove Wood Fence BE'] = { pos = 585, section = 12 },
['Mangrove Wood Fence Gate'] = { pos = 586, section = 12 },
['Mangrove Wood Planks'] = { pos = 587, section = 12 },
['Mangrove Wood Pressure Plate'] = { pos = 601, section = 13 },
['Mangrove Wood Sign'] = { pos = 604, section = 17 },
['Mangrove Wood Slab'] = { pos = 588, section = 12 },
['Mangrove Wood Stairs'] = { pos = 589, section = 12 },
['Mangrove Wood Trapdoor'] = { pos = 602, section = 13 },
Map = { pos = 3579, section = 25 },
['Map BE'] = { pos = 124, section = 25 },
['Material Reducer'] = { pos = 1940, section = 33 },
['Medium Amethyst Bud'] = { pos = 418, section = 15 },
Meitnerium = { pos = 1832, section = 34 },
Melon = { pos = 3427, section = 19 },
['Melon Seeds'] = { pos = 1050, section = 19 },
['Melon Slice'] = { pos = 3207, section = 10 },
Mendelevium = { pos = 1833, section = 34 },
['Mercuric Chloride'] = { pos = 1915, section = 37 },
Mercury = { pos = 1817, section = 34 },
Metalloid = { pos = 71, section = 34 },
['MHF Alex'] = { pos = 1438, section = 14 },
['MHF ArrowDown'] = { pos = 1439, section = 14 },
['MHF ArrowLeft'] = { pos = 1440, section = 14 },
['MHF ArrowRight'] = { pos = 1441, section = 14 },
['MHF ArrowUp'] = { pos = 1442, section = 14 },
['MHF Blaze'] = { pos = 1443, section = 14 },
['MHF Cactus'] = { pos = 1444, section = 14 },
['MHF Cake'] = { pos = 1445, section = 14 },
['MHF CaveSpider'] = { pos = 1446, section = 14 },
['MHF Chest'] = { pos = 1447, section = 14 },
['MHF Chicken'] = { pos = 1448, section = 14 },
['MHF CoconutB'] = { pos = 1449, section = 14 },
['MHF CoconutG'] = { pos = 1450, section = 14 },
['MHF Cow'] = { pos = 1451, section = 14 },
['MHF Creeper'] = { pos = 964, section = 14 },
['MHF Enderman'] = { pos = 1452, section = 14 },
['MHF Exclamation'] = { pos = 1453, section = 14 },
['MHF Ghast'] = { pos = 1454, section = 14 },
['MHF Golem'] = { pos = 1455, section = 14 },
['MHF Herobrine'] = { pos = 1456, section = 14 },
['MHF LavaSlime'] = { pos = 1457, section = 14 },
['MHF Melon'] = { pos = 1458, section = 14 },
['MHF MushroomCow'] = { pos = 1459, section = 14 },
['MHF OakLog'] = { pos = 1460, section = 14 },
['MHF Ocelot'] = { pos = 1461, section = 14 },
['MHF Pig'] = { pos = 1462, section = 14 },
['MHF PigZombie'] = { pos = 1463, section = 14 },
['MHF Present1'] = { pos = 1464, section = 14 },
['MHF Present2'] = { pos = 1465, section = 14 },
['MHF Pumpkin'] = { pos = 1466, section = 14 },
['MHF Question'] = { pos = 1467, section = 14 },
['MHF Sheep'] = { pos = 1468, section = 14 },
['MHF Skeleton'] = { pos = 3643, section = 14 },
['MHF Slime'] = { pos = 1469, section = 14 },
['MHF Spider'] = { pos = 1470, section = 14 },
['MHF Squid'] = { pos = 1471, section = 14 },
['MHF Steve'] = { pos = 966, section = 14 },
['MHF TNT'] = { pos = 1472, section = 14 },
['MHF TNT2'] = { pos = 1473, section = 14 },
['MHF Villager'] = { pos = 1474, section = 14 },
['MHF WSkeleton'] = { pos = 3644, section = 14 },
['MHF Zombie'] = { pos = 3645, section = 14 },
Milk = { pos = 3148, section = 4 },
['Milk Bucket'] = { pos = 3148, section = 4 },
['Milk Bucket Revision 1'] = { pos = 226, section = 29 },
Minecart = { pos = 3622, section = 27 },
['Minecart with Chest'] = { pos = 3623, section = 27 },
['Minecart with Command Block'] = { pos = 3624, section = 27 },
['Minecart with Command Block BE'] = { pos = 1539, section = 27 },
['Minecart with Furnace'] = { pos = 3625, section = 27 },
['Minecart with Hopper'] = { pos = 3626, section = 27 },
['Minecart with TNT'] = { pos = 3627, section = 27 },
['Miner Pottery Sherd'] = { pos = 1230, section = 44 },
['Missing Model JE1'] = { pos = 1306, section = 30 },
['Missing Texture'] = { pos = 1306, section = 30, deprecated = true },
['Missing Texture 1.5'] = { pos = 554, section = 30, deprecated = true },
['Missing Texture BE'] = { pos = 356, section = 30, deprecated = true },
Molybdenum = { pos = 1834, section = 34 },
['Monster Spawner'] = { pos = 3379, section = 15 },
['Monster Spawner BE'] = { pos = 508, section = 15 },
['Monster Spawner JE'] = { pos = 3379, section = 15 },
['Moobloom Spawn Egg'] = { pos = 627, section = 38 },
['Moon Cow Spawn Egg'] = { pos = 1325, section = 32 },
['Mooshroom Spawn Egg'] = { pos = 1154, section = 24 },
['Mooshroom Spawn Egg Revision 1'] = { pos = 1390, section = 39 },
Moscovium = { pos = 1835, section = 34 },
['Moss Block'] = { pos = 461, section = 15 },
['Moss Carpet'] = { pos = 462, section = 15 },
['Moss Stone'] = { pos = 986, section = 15 },
['Mossy Cobblestone'] = { pos = 3367, section = 15 },
['Mossy Cobblestone Slab'] = { pos = 3274, section = 12 },
['Mossy Cobblestone Stairs'] = { pos = 3275, section = 12 },
['Mossy Cobblestone Wall'] = { pos = 3276, section = 12 },
['Mossy Cobblestone Wall BE'] = { pos = 2027, section = 12 },
['Mossy Stone Brick Slab'] = { pos = 3277, section = 12 },
['Mossy Stone Brick Stairs'] = { pos = 3278, section = 12 },
['Mossy Stone Brick Wall'] = { pos = 3279, section = 12 },
['Mossy Stone Brick Wall BE'] = { pos = 26, section = 12 },
['Mossy Stone Bricks'] = { pos = 3368, section = 15 },
['Mossy Stone Bricks Monster Egg'] = { pos = 3368, section = 15 },
['Mourner Pottery Sherd'] = { pos = 1231, section = 44 },
Mud = { pos = 603, section = 15 },
['Mud Brick Slab'] = { pos = 591, section = 12 },
['Mud Brick Stairs'] = { pos = 592, section = 12 },
['Mud Brick Wall'] = { pos = 593, section = 12 },
['Mud Brick Wall BE'] = { pos = 629, section = 12 },
['Mud Bricks'] = { pos = 594, section = 12 },
['Mud Bucket'] = { pos = 92, section = 38 },
['Muddy Mangrove Roots'] = { pos = 609, section = 19 },
['Mule Spawn Egg'] = { pos = 1374, section = 24 },
['Mule Spawn Egg Revision 1'] = { pos = 1152, section = 24 },
['Mundane Lingering Potion'] = { pos = 1097, section = 31 },
['Mundane Potion'] = { pos = 1083, section = 21 },
['Mundane Potion Revision 1'] = { pos = 293, section = 45 },
['Mundane Splash Potion'] = { pos = 1100, section = 22 },
['Mushroom Stem'] = { pos = 3428, section = 19 },
['Mushroom Stew'] = { pos = 3208, section = 10 },
['Music Disc 11'] = { pos = 3153, section = 5 },
['Music Disc 13'] = { pos = 673, section = 5 },
['Music Disc 5'] = { pos = 630, section = 5 },
['Music Disc Blocks'] = { pos = 675, section = 5 },
['Music Disc Cat'] = { pos = 676, section = 5 },
['Music Disc Chirp'] = { pos = 677, section = 5 },
['Music Disc Far'] = { pos = 678, section = 5 },
['Music Disc Mall'] = { pos = 681, section = 5 },
['Music Disc Mellohi'] = { pos = 682, section = 5 },
['Music Disc Otherside'] = { pos = 555, section = 5 },
['Music Disc Pigstep'] = { pos = 289, section = 5 },
['Music Disc Relic'] = { pos = 1324, section = 5 },
['Music Disc Stal'] = { pos = 684, section = 5 },
['Music Disc Strad'] = { pos = 685, section = 5 },
['Music Disc Wait'] = { pos = 686, section = 5 },
['Music Disc Ward'] = { pos = 687, section = 5 },
Mycelium = { pos = 3369, section = 15 },
['Mycelium Revision 1'] = { pos = 106, section = 29 },
Name = { pos = 1263, section = 32 },
['Name Tag'] = { pos = 3580, section = 25 },
Natrium = { pos = 1836, section = 34 },
['Nautilus Shell'] = { pos = 1743, section = 23 },
Neodymium = { pos = 1837, section = 34 },
Neon = { pos = 1838, section = 34 },
Neptunium = { pos = 1839, section = 34 },
['Nether Brick'] = { pos = 3520, section = 23 },
['Nether Brick Block'] = { pos = 1003, section = 16 },
['Nether Brick Fence'] = { pos = 640, section = 16 },
['Nether Brick Fence BE'] = { pos = 3383, section = 16 },
['Nether Brick Slab'] = { pos = 3280, section = 12 },
['Nether Brick Stairs'] = { pos = 3384, section = 16 },
['Nether Brick Stairs Left'] = { pos = 2260, section = 42 },
['Nether Brick Wall'] = { pos = 3281, section = 12 },
['Nether Brick Wall BE'] = { pos = 27, section = 12 },
['Nether Bricks'] = { pos = 3385, section = 16 },
['Nether Gold Ore'] = { pos = 202, section = 16 },
['Nether Gold Ore Revision 1'] = { pos = 225, section = 29 },
['Nether Portal'] = { pos = 2162, section = 29 },
['Nether Quartz'] = { pos = 3521, section = 23 },
['Nether Quartz Ore'] = { pos = 3386, section = 16 },
['Nether Reactor Core'] = { pos = 1599, section = 20 },
['Nether Reactor Core Revision 1'] = { pos = 1081, section = 29 },
['Nether Sprouts'] = { pos = 94, section = 16 },
['Nether Sprouts old'] = { pos = 191, section = 16 },
['Nether Sprouts Revision 1'] = { pos = 267, section = 29 },
['Nether Star'] = { pos = 355, section = 23 },
['Nether Wart'] = { pos = 663, section = 3 },
['Nether Wart (block)'] = { pos = 1007, section = 16 },
['Nether Wart Block'] = { pos = 3282, section = 16 },
['Netherite Axe'] = { pos = 137, section = 25 },
['Netherite Boots'] = { pos = 142, section = 1 },
['Netherite Chestplate'] = { pos = 143, section = 1 },
['Netherite Helmet'] = { pos = 144, section = 1 },
['Netherite Hoe'] = { pos = 138, section = 25 },
['Netherite Ingot'] = { pos = 135, section = 23 },
['Netherite Leggings'] = { pos = 145, section = 1 },
['Netherite Pickaxe'] = { pos = 139, section = 25 },
['Netherite Scrap'] = { pos = 136, section = 23 },
['Netherite Shovel'] = { pos = 140, section = 25 },
['Netherite Sword'] = { pos = 141, section = 28 },
['Netherite Trim Chainmail Boots'] = { pos = 1063, section = 43 },
['Netherite Trim Chainmail Chestplate'] = { pos = 1064, section = 43 },
['Netherite Trim Chainmail Helmet'] = { pos = 1066, section = 43 },
['Netherite Trim Chainmail Leggings'] = { pos = 1069, section = 43 },
['Netherite Trim Diamond Boots'] = { pos = 1070, section = 43 },
['Netherite Trim Diamond Chestplate'] = { pos = 1071, section = 43 },
['Netherite Trim Diamond Helmet'] = { pos = 1072, section = 43 },
['Netherite Trim Diamond Leggings'] = { pos = 1073, section = 43 },
['Netherite Trim Golden Boots'] = { pos = 1074, section = 43 },
['Netherite Trim Golden Chestplate'] = { pos = 1075, section = 43 },
['Netherite Trim Golden Helmet'] = { pos = 1076, section = 43 },
['Netherite Trim Golden Leggings'] = { pos = 1077, section = 43 },
['Netherite Trim Iron Boots'] = { pos = 1078, section = 43 },
['Netherite Trim Iron Chestplate'] = { pos = 1084, section = 43 },
['Netherite Trim Iron Helmet'] = { pos = 1085, section = 43 },
['Netherite Trim Iron Leggings'] = { pos = 1086, section = 43 },
['Netherite Trim Leather Boots'] = { pos = 1087, section = 43 },
['Netherite Trim Leather Cap'] = { pos = 1088, section = 43 },
['Netherite Trim Leather Pants'] = { pos = 1089, section = 43 },
['Netherite Trim Leather Tunic'] = { pos = 1090, section = 43 },
['Netherite Trim Netherite Boots'] = { pos = 1091, section = 43 },
['Netherite Trim Netherite Chestplate'] = { pos = 1092, section = 43 },
['Netherite Trim Netherite Helmet'] = { pos = 1093, section = 43 },
['Netherite Trim Netherite Leggings'] = { pos = 1094, section = 43 },
['Netherite Trim Turtle Shell'] = { pos = 1095, section = 43 },
['Netherite Upgrade'] = { pos = 801, section = 41 },
['Netherite Upgrade Smithing Template'] = { pos = 801, section = 41 },
Netherrack = { pos = 3387, section = 16 },
Nickel = { pos = 1840, section = 34 },
Nihonium = { pos = 1841, section = 34 },
Niobium = { pos = 1842, section = 34 },
Nitrogen = { pos = 1843, section = 34 },
Nobelium = { pos = 1844, section = 34 },
['Noble gas'] = { pos = 72, section = 34 },
['Note Block'] = { pos = 3611, section = 26 },
['Oak Boat'] = { pos = 633, section = 27 },
['Oak Boat Revision 2'] = { pos = 3628, section = 29 },
['Oak Boat with Chest'] = { pos = 616, section = 27 },
['Oak Button'] = { pos = 3340, section = 13 },
['Oak Door'] = { pos = 571, section = 13 },
['Oak Door Revision 3'] = { pos = 945, section = 13 },
['Oak Fence'] = { pos = 641, section = 12 },
['Oak Fence BE'] = { pos = 3284, section = 12 },
['Oak Fence Gate'] = { pos = 3283, section = 13 },
['Oak Fence Gate BE'] = { pos = 56, section = 13 },
['Oak Fence Gate Revision 1'] = { pos = 1620, section = 13 },
['Oak Hanging Sign'] = { pos = 658, section = 5 },
['Oak Leaves'] = { pos = 3429, section = 19 },
['Oak Log'] = { pos = 3430, section = 19 },
['Oak Planks'] = { pos = 903, section = 12 },
['Oak Pressure Plate'] = { pos = 3341, section = 13 },
['Oak Pressure Plate Revision 1'] = { pos = 2086, section = 29 },
['Oak Sapling'] = { pos = 3431, section = 19 },
['Oak Sign'] = { pos = 3389, section = 17 },
['Oak Sign Revision 1'] = { pos = 354, section = 29 },
['Oak Slab'] = { pos = 3285, section = 12 },
['Oak Stairs'] = { pos = 3286, section = 12 },
['Oak Stairs Left'] = { pos = 2261, section = 42 },
['Oak Trapdoor'] = { pos = 958, section = 13 },
['Oak Wood'] = { pos = 3287, section = 12 },
['Oak Wood Button'] = { pos = 3340, section = 13 },
['Oak Wood Door'] = { pos = 571, section = 13 },
['Oak Wood Fence'] = { pos = 641, section = 12 },
['Oak Wood Fence Gate'] = { pos = 3283, section = 13 },
['Oak Wood Planks'] = { pos = 903, section = 12 },
['Oak Wood Pressure Plate'] = { pos = 3341, section = 13 },
['Oak Wood Sign'] = { pos = 3389, section = 17 },
['Oak Wood Slab'] = { pos = 904, section = 12 },
['Oak Wood Stairs'] = { pos = 3286, section = 12 },
['Oak Wood Trapdoor'] = { pos = 958, section = 13 },
Observer = { pos = 3612, section = 26 },
['Observer BE'] = { pos = 1619, section = 13 },
['Observer PE old'] = { pos = 1383, section = 29 },
['Observer pre-1.11-pre1'] = { pos = 1383, section = 29 },
Obsidian = { pos = 3370, section = 15 },
['Obsidian Boat'] = { pos = 1308, section = 32 },
['Ocean Explorer Map'] = { pos = 3581, section = 25 },
['Ocean Explorer Map BE'] = { pos = 125, section = 25 },
['Ocelot Spawn Egg'] = { pos = 1155, section = 24 },
['Ochre Froglight'] = { pos = 595, section = 12 },
['Ochre Froglight BE'] = { pos = 578, section = 12 },
Oganesson = { pos = 1845, section = 34 },
['Ominous Banner'] = { pos = 2468, section = 2 },
['Ominous Shield'] = { pos = 377, section = 1 },
['Orange Balloon'] = { pos = 1941, section = 33 },
['Orange Banner'] = { pos = 764, section = 7 },
['Orange Banner 15w14a'] = { pos = 482, section = 32 },
['Orange Base Banner'] = { pos = 2910, section = 2 },
['Orange Base Dexter Canton Banner'] = { pos = 2911, section = 2 },
['Orange Base Gradient Banner'] = { pos = 2912, section = 2 },
['Orange Base Indented Banner'] = { pos = 2913, section = 2 },
['Orange Base Sinister Canton Banner'] = { pos = 2914, section = 2 },
['Orange Beaker'] = { pos = 1899, section = 35 },
['Orange Bed'] = { pos = 3181, section = 7 },
['Orange Bed BE'] = { pos = 1555, section = 7 },
['Orange Bed LCE'] = { pos = 1555, section = 7 },
['Orange Bend Banner'] = { pos = 2915, section = 2 },
['Orange Bend Sinister Banner'] = { pos = 2916, section = 2 },
['Orange Bordure Banner'] = { pos = 2917, section = 2 },
['Orange Bordure Indented Banner'] = { pos = 2918, section = 2 },
['Orange Candle'] = { pos = 419, section = 7 },
['Orange Carpet'] = { pos = 1631, section = 7 },
['Orange Carpet Revision 1'] = { pos = 765, section = 40 },
['Orange Chevron Banner'] = { pos = 2919, section = 2 },
['Orange Chief Banner'] = { pos = 2920, section = 2 },
['Orange Chief Dexter Canton Banner'] = { pos = 2921, section = 2 },
['Orange Chief Indented Banner'] = { pos = 2922, section = 2 },
['Orange Chief Sinister Canton Banner'] = { pos = 2923, section = 2 },
['Orange Cloth'] = { pos = 236, section = 40 },
['Orange Concrete'] = { pos = 1505, section = 7 },
['Orange Concrete Powder'] = { pos = 1506, section = 7 },
['Orange Creeper Charge Banner'] = { pos = 2924, section = 2 },
['Orange Cross Banner'] = { pos = 2925, section = 2 },
['Orange Dye'] = { pos = 3166, section = 6 },
['Orange Fess Banner'] = { pos = 2926, section = 2 },
['Orange Field Masoned Banner'] = { pos = 2927, section = 2 },
['Orange Firework Star'] = { pos = 816, section = 9 },
['Orange Flask'] = { pos = 1911, section = 36 },
['Orange Flower Charge Banner'] = { pos = 2928, section = 2 },
['Orange Glazed Terracotta'] = { pos = 1542, section = 7 },
['Orange Glazed Terracotta Revision 1'] = { pos = 1507, section = 40 },
['Orange Globe Banner'] = { pos = 46, section = 2 },
['Orange Glow Stick'] = { pos = 2002, section = 33 },
['Orange Gradient Banner'] = { pos = 2929, section = 2 },
['Orange Inverted Chevron Banner'] = { pos = 2930, section = 2 },
['Orange Jar'] = { pos = 1925, section = 37 },
['Orange Lozenge Banner'] = { pos = 2931, section = 2 },
['Orange Pale Banner'] = { pos = 2932, section = 2 },
['Orange Pale Dexter Banner'] = { pos = 2933, section = 2 },
['Orange Pale Sinister Banner'] = { pos = 2934, section = 2 },
['Orange Paly Banner'] = { pos = 2935, section = 2 },
['Orange Per Bend Banner'] = { pos = 2936, section = 2 },
['Orange Per Bend Inverted Banner'] = { pos = 2937, section = 2 },
['Orange Per Bend Sinister Banner'] = { pos = 2938, section = 2 },
['Orange Per Bend Sinister Inverted Banner'] = { pos = 2939, section = 2 },
['Orange Per Fess Banner'] = { pos = 2940, section = 2 },
['Orange Per Fess Inverted Banner'] = { pos = 2941, section = 2 },
['Orange Per Pale Banner'] = { pos = 2942, section = 2 },
['Orange Per Pale Inverted Banner'] = { pos = 2943, section = 2 },
['Orange Piglin Banner'] = { pos = 369, section = 2 },
['Orange Roundel Banner'] = { pos = 2944, section = 2 },
['Orange Saltire Banner'] = { pos = 2945, section = 2 },
['Orange Shield'] = { pos = 2523, section = 1 },
['Orange Shulker Box'] = { pos = 1613, section = 7 },
['Orange Shulker Box Revision 1'] = { pos = 1426, section = 40 },
['Orange Skull Charge Banner'] = { pos = 2946, section = 2 },
['Orange Snout Banner'] = { pos = 369, section = 2 },
['Orange Sparkler'] = { pos = 1758, section = 33 },
['Orange Sparkler (active)'] = { pos = 1759, section = 33 },
['Orange Stained Glass'] = { pos = 767, section = 7 },
['Orange Stained Glass Pane'] = { pos = 768, section = 7 },
['Orange Stained Glass Pane BE'] = { pos = 2018, section = 7 },
['Orange Terracotta'] = { pos = 766, section = 7 },
['Orange Thing Banner'] = { pos = 2947, section = 2 },
['Orange Tinted Glass'] = { pos = 1309, section = 40 },
['Orange Tinted Glass Pane'] = { pos = 13, section = 40 },
['Orange Tulip'] = { pos = 3432, section = 19 },
['Orange Wood Planks'] = { pos = 254, section = 30 },
['Orange Wool'] = { pos = 1533, section = 7 },
['Orange Wool Revision 2'] = { pos = 769, section = 40 },
Osmium = { pos = 1846, section = 34 },
['Other non-metal'] = { pos = 73, section = 34 },
['Oxeye Daisy'] = { pos = 3433, section = 19 },
['Oxidized Copper'] = { pos = 441, section = 12 },
['Oxidized Copper Block'] = { pos = 441, section = 12 },
['Oxidized Cut Copper'] = { pos = 442, section = 12 },
['Oxidized Cut Copper Block'] = { pos = 442, section = 12 },
['Oxidized Cut Copper Slab'] = { pos = 443, section = 12 },
['Oxidized Cut Copper Stairs'] = { pos = 444, section = 12 },
Oxygen = { pos = 1847, section = 34 },
['Packed Air'] = { pos = 2363, section = 15 },
['Packed Ice'] = { pos = 3371, section = 15 },
['Packed Mud'] = { pos = 596, section = 12 },
Painting = { pos = 3154, section = 5 },
Palladium = { pos = 1848, section = 34 },
['Panda Spawn Egg'] = { pos = 2412, section = 24 },
Paper = { pos = 3523, section = 23 },
['Parrot Spawn Egg'] = { pos = 1544, section = 24 },
['Pearlescent Froglight'] = { pos = 612, section = 12 },
['Pearlescent Froglight BE'] = { pos = 579, section = 12 },
Peony = { pos = 3434, section = 19 },
['Peony 3DS'] = { pos = 1572, section = 29 },
['Peony BE Revision 2'] = { pos = 1572, section = 29 },
['Peony LCE Revision 2'] = { pos = 1572, section = 29 },
['Petrified Oak Slab'] = { pos = 904, section = 12 },
['Phantom Membrane'] = { pos = 1730, section = 3 },
['Phantom Membrane Revision 1'] = { pos = 105, section = 29 },
['Phantom Spawn Egg'] = { pos = 1974, section = 24 },
['Phantom Spawn Egg Revision 1'] = { pos = 1728, section = 39 },
Phosphorus = { pos = 1849, section = 34 },
Photo = { pos = 620, section = 20 },
['Pickaxe Block'] = { pos = 1264, section = 32 },
['Pig Spawn Egg'] = { pos = 1156, section = 24 },
['Pig Spawn Egg Revision 1'] = { pos = 1391, section = 39 },
['Piglin Brute Spawn Egg'] = { pos = 262, section = 24 },
['Piglin Head'] = { pos = 701, section = 14 },
['Piglin Spawn Egg'] = { pos = 193, section = 24 },
['Piglin Spawn Egg BE'] = { pos = 205, section = 24 },
['Pillager Spawn Egg'] = { pos = 2413, section = 24 },
['Pink Balloon'] = { pos = 1942, section = 33 },
['Pink Banner'] = { pos = 770, section = 7 },
['Pink Banner 15w14a'] = { pos = 483, section = 32 },
['Pink Base Banner'] = { pos = 2948, section = 2 },
['Pink Base Dexter Canton Banner'] = { pos = 2949, section = 2 },
['Pink Base Gradient Banner'] = { pos = 2950, section = 2 },
['Pink Base Indented Banner'] = { pos = 2951, section = 2 },
['Pink Base Sinister Canton Banner'] = { pos = 2952, section = 2 },
['Pink Bed'] = { pos = 3182, section = 7 },
['Pink Bed BE'] = { pos = 1556, section = 7 },
['Pink Bed LCE'] = { pos = 1556, section = 7 },
['Pink Bend Banner'] = { pos = 2953, section = 2 },
['Pink Bend Sinister Banner'] = { pos = 2954, section = 2 },
['Pink Bordure Banner'] = { pos = 2955, section = 2 },
['Pink Bordure Indented Banner'] = { pos = 2956, section = 2 },
['Pink Candle'] = { pos = 420, section = 7 },
['Pink Carpet'] = { pos = 1632, section = 7 },
['Pink Carpet Revision 1'] = { pos = 771, section = 40 },
['Pink Chevron Banner'] = { pos = 2957, section = 2 },
['Pink Chief Banner'] = { pos = 2958, section = 2 },
['Pink Chief Dexter Canton Banner'] = { pos = 2959, section = 2 },
['Pink Chief Indented Banner'] = { pos = 2960, section = 2 },
['Pink Chief Sinister Canton Banner'] = { pos = 2961, section = 2 },
['Pink Concrete'] = { pos = 1508, section = 7 },
['Pink Concrete Powder'] = { pos = 1509, section = 7 },
['Pink Creeper Charge Banner'] = { pos = 2962, section = 2 },
['Pink Cross Banner'] = { pos = 2963, section = 2 },
['Pink Daisy'] = { pos = 552, section = 38 },
['Pink Dye'] = { pos = 3167, section = 6 },
['Pink Fess Banner'] = { pos = 2964, section = 2 },
['Pink Field Masoned Banner'] = { pos = 2965, section = 2 },
['Pink Firework Star'] = { pos = 817, section = 9 },
['Pink Flower Charge Banner'] = { pos = 2966, section = 2 },
['Pink Glazed Terracotta'] = { pos = 1510, section = 7 },
['Pink Globe Banner'] = { pos = 47, section = 2 },
['Pink Glow Stick'] = { pos = 2003, section = 33 },
['Pink Gradient Banner'] = { pos = 2967, section = 2 },
['Pink Inverted Chevron Banner'] = { pos = 2968, section = 2 },
['Pink Lozenge Banner'] = { pos = 2969, section = 2 },
['Pink Pale Banner'] = { pos = 2970, section = 2 },
['Pink Pale Dexter Banner'] = { pos = 2971, section = 2 },
['Pink Pale Sinister Banner'] = { pos = 2972, section = 2 },
['Pink Paly Banner'] = { pos = 2973, section = 2 },
['Pink Per Bend Banner'] = { pos = 2974, section = 2 },
['Pink Per Bend Inverted Banner'] = { pos = 2975, section = 2 },
['Pink Per Bend Sinister Banner'] = { pos = 2976, section = 2 },
['Pink Per Bend Sinister Inverted Banner'] = { pos = 2977, section = 2 },
['Pink Per Fess Banner'] = { pos = 2978, section = 2 },
['Pink Per Fess Inverted Banner'] = { pos = 2979, section = 2 },
['Pink Per Pale Banner'] = { pos = 2980, section = 2 },
['Pink Per Pale Inverted Banner'] = { pos = 2981, section = 2 },
['Pink Petals'] = { pos = 1198, section = 19 },
['Pink Piglin Banner'] = { pos = 370, section = 2 },
['Pink Roundel Banner'] = { pos = 2982, section = 2 },
['Pink Saltire Banner'] = { pos = 2983, section = 2 },
['Pink Shield'] = { pos = 2524, section = 1 },
['Pink Shulker Box'] = { pos = 1614, section = 7 },
['Pink Shulker Box Revision 1'] = { pos = 1427, section = 40 },
['Pink Skull Charge Banner'] = { pos = 2984, section = 2 },
['Pink Snout Banner'] = { pos = 370, section = 2 },
['Pink Stained Glass'] = { pos = 773, section = 7 },
['Pink Stained Glass Pane'] = { pos = 774, section = 7 },
['Pink Stained Glass Pane BE'] = { pos = 2019, section = 7 },
['Pink Terracotta'] = { pos = 772, section = 7 },
['Pink Thing Banner'] = { pos = 2985, section = 2 },
['Pink Tinted Glass'] = { pos = 1310, section = 40 },
['Pink Tinted Glass Pane'] = { pos = 14, section = 40 },
['Pink Tulip'] = { pos = 3435, section = 19 },
['Pink Wood Planks'] = { pos = 255, section = 30 },
['Pink Wool'] = { pos = 1534, section = 7 },
['Pink Wool Revision 2'] = { pos = 775, section = 40 },
Piston = { pos = 3342, section = 13 },
['Piston Head Model'] = { pos = 1316, section = 30 },
['Pitcher Plant'] = { pos = 1212, section = 19 },
['Pitcher Pod'] = { pos = 1213, section = 19 },
['Place Block'] = { pos = 1265, section = 32 },
['Placeholder Texture'] = { pos = 1317, section = 30 },
['Plains Village Map'] = { pos = 1326, section = 25 },
['Plains Village Map BE'] = { pos = 1327, section = 25 },
Platinum = { pos = 1850, section = 34 },
['Player Head'] = { pos = 966, section = 14 },
['Plenty Pottery Sherd'] = { pos = 1232, section = 44 },
Plumbum = { pos = 1826, section = 34 },
Plutonium = { pos = 1851, section = 34 },
Podzol = { pos = 3372, section = 15 },
['Pointed Dripstone'] = { pos = 436, section = 15 },
['Pointed Dripstone BE'] = { pos = 459, section = 15 },
['Poisonous Potato'] = { pos = 3209, section = 10 },
['Polar Bear Spawn Egg'] = { pos = 1375, section = 24 },
['Polished Andesite'] = { pos = 907, section = 12 },
['Polished Andesite Slab'] = { pos = 3288, section = 12 },
['Polished Andesite Stairs'] = { pos = 3289, section = 12 },
['Polished Basalt'] = { pos = 206, section = 12 },
['Polished Blackstone'] = { pos = 274, section = 16 },
['Polished Blackstone Brick Slab'] = { pos = 279, section = 12 },
['Polished Blackstone Brick Stairs'] = { pos = 280, section = 12 },
['Polished Blackstone Brick Wall'] = { pos = 281, section = 12 },
['Polished Blackstone Brick Wall BE'] = { pos = 387, section = 12 },
['Polished Blackstone Bricks'] = { pos = 275, section = 16 },
['Polished Blackstone Button'] = { pos = 285, section = 13 },
['Polished Blackstone Pressure Plate'] = { pos = 286, section = 13 },
['Polished Blackstone Slab'] = { pos = 282, section = 12 },
['Polished Blackstone Stairs'] = { pos = 283, section = 12 },
['Polished Blackstone Wall'] = { pos = 284, section = 12 },
['Polished Blackstone Wall BE'] = { pos = 388, section = 12 },
['Polished Deepslate'] = { pos = 501, section = 12 },
['Polished Deepslate Slab'] = { pos = 504, section = 12 },
['Polished Deepslate Stairs'] = { pos = 505, section = 12 },
['Polished Deepslate Wall'] = { pos = 502, section = 12 },
['Polished Deepslate Wall BE'] = { pos = 562, section = 12 },
['Polished Diorite'] = { pos = 908, section = 12 },
['Polished Diorite Slab'] = { pos = 3290, section = 12 },
['Polished Diorite Stairs'] = { pos = 3291, section = 12 },
['Polished Granite'] = { pos = 909, section = 12 },
['Polished Granite Slab'] = { pos = 2430, section = 12 },
['Polished Granite Stairs'] = { pos = 2431, section = 12 },
Polonium = { pos = 1852, section = 34 },
Polyethylene = { pos = 1922, section = 37 },
['Popped Chorus Fruit'] = { pos = 3524, section = 23 },
Poppy = { pos = 3436, section = 19 },
Portal = { pos = 1011, section = 17 },
Portfolio = { pos = 1594, section = 20 },
['Post transition metal'] = { pos = 74, section = 34 },
Poster = { pos = 1595, section = 20 },
Potassium = { pos = 1822, section = 34 },
['Potassium Chloride'] = { pos = 1915, section = 37 },
['Potassium Iodide'] = { pos = 1890, section = 35 },
Potato = { pos = 3210, section = 10 },
['Potato Revision 1'] = { pos = 128, section = 29 },
['Potato Revision 2'] = { pos = 129, section = 29 },
['Potion of Big'] = { pos = 1282, section = 32 },
['Potion of Decay'] = { pos = 1402, section = 21 },
['Potion of Fire Resistance'] = { pos = 3450, section = 21 },
['Potion of Fire Resistance Revision 1'] = { pos = 294, section = 45 },
['Potion of Harming'] = { pos = 3451, section = 21 },
['Potion of Harming Revision 1'] = { pos = 295, section = 45 },
['Potion of Healing'] = { pos = 3452, section = 21 },
['Potion of Healing Revision 1'] = { pos = 296, section = 45 },
['Potion of Invisibility'] = { pos = 3453, section = 21 },
['Potion of Invisibility Revision 1'] = { pos = 297, section = 45 },
['Potion of Leaping'] = { pos = 3454, section = 21 },
['Potion of Leaping Revision 1'] = { pos = 298, section = 45 },
['Potion of Levitation'] = { pos = 114, section = 21 },
['Potion of Luck'] = { pos = 3455, section = 21 },
['Potion of Luck Revision 1'] = { pos = 299, section = 45 },
['Potion of Night Vision'] = { pos = 3456, section = 21 },
['Potion of Night Vision Revision 1'] = { pos = 300, section = 45 },
['Potion of Poison'] = { pos = 3457, section = 21 },
['Potion of Poison Revision 1'] = { pos = 301, section = 45 },
['Potion of Regeneration'] = { pos = 3458, section = 21 },
['Potion of Regeneration Revision 1'] = { pos = 302, section = 45 },
['Potion of Slow Falling'] = { pos = 3459, section = 21 },
['Potion of Slow Falling Revision 1'] = { pos = 303, section = 45 },
['Potion of Slowness'] = { pos = 3460, section = 21 },
['Potion of Slowness Revision 1'] = { pos = 304, section = 45 },
['Potion of Small'] = { pos = 1283, section = 32 },
['Potion of Strength'] = { pos = 3461, section = 21 },
['Potion of Strength Revision 1'] = { pos = 305, section = 45 },
['Potion of Swiftness'] = { pos = 3462, section = 21 },
['Potion of Swiftness Revision 1'] = { pos = 306, section = 45 },
['Potion of the Turtle Master'] = { pos = 3463, section = 21 },
['Potion of the Turtle Master Revision 1'] = { pos = 307, section = 45 },
['Potion of Water Breathing'] = { pos = 3464, section = 21 },
['Potion of Water Breathing Revision 1'] = { pos = 308, section = 45 },
['Potion of Weakness'] = { pos = 3465, section = 21 },
['Powder Snow'] = { pos = 391, section = 15 },
['Powder Snow Bucket'] = { pos = 434, section = 4 },
['Powered Rail'] = { pos = 3343, section = 13 },
Praseodymium = { pos = 1853, section = 34 },
['Prismarine Brick Slab'] = { pos = 3292, section = 12 },
['Prismarine Brick Stairs'] = { pos = 111, section = 12 },
['Prismarine Brick Stairs Old'] = { pos = 1663, section = 12 },
['Prismarine Bricks'] = { pos = 3373, section = 15 },
['Prismarine Bricks Slab'] = { pos = 1666, section = 12 },
['Prismarine Crystals'] = { pos = 3525, section = 23 },
['Prismarine Shard'] = { pos = 3526, section = 23 },
['Prismarine Wall'] = { pos = 97, section = 12 },
['Prismarine Wall BE'] = { pos = 28, section = 12 },
['Prize Pottery Sherd'] = { pos = 1203, section = 44 },
Promethium = { pos = 1854, section = 34 },
Protactinium = { pos = 1855, section = 34 },
Protoactinium = { pos = 1855, section = 34 },
Pufferfish = { pos = 1692, section = 10 },
['Pufferfish 3DS'] = { pos = 837, section = 10 },
['Pufferfish Revision 2'] = { pos = 837, section = 10 },
['Pufferfish Spawn Egg'] = { pos = 1698, section = 24 },
['Pufferfish Spawn Egg Revision 1'] = { pos = 1969, section = 39 },
Pumpkin = { pos = 3437, section = 19 },
['Pumpkin Pie'] = { pos = 3211, section = 10 },
['Pumpkin Seeds'] = { pos = 1061, section = 19 },
['Purple Balloon'] = { pos = 1943, section = 33 },
['Purple Banner'] = { pos = 776, section = 7 },
['Purple Banner 15w14a'] = { pos = 484, section = 32 },
['Purple Base Banner'] = { pos = 2986, section = 2 },
['Purple Base Dexter Canton Banner'] = { pos = 2987, section = 2 },
['Purple Base Gradient Banner'] = { pos = 2988, section = 2 },
['Purple Base Indented Banner'] = { pos = 2989, section = 2 },
['Purple Base Sinister Canton Banner'] = { pos = 2990, section = 2 },
['Purple Beaker'] = { pos = 1900, section = 35 },
['Purple Bed'] = { pos = 3183, section = 7 },
['Purple Bed BE'] = { pos = 1557, section = 7 },
['Purple Bed LCE'] = { pos = 1557, section = 7 },
['Purple Bend Banner'] = { pos = 2991, section = 2 },
['Purple Bend Sinister Banner'] = { pos = 2992, section = 2 },
['Purple Bordure Banner'] = { pos = 2993, section = 2 },
['Purple Bordure Indented Banner'] = { pos = 2994, section = 2 },
['Purple Candle'] = { pos = 421, section = 7 },
['Purple Carpet'] = { pos = 1633, section = 7 },
['Purple Carpet Revision 1'] = { pos = 777, section = 40 },
['Purple Chevron Banner'] = { pos = 2995, section = 2 },
['Purple Chief Banner'] = { pos = 2996, section = 2 },
['Purple Chief Dexter Canton Banner'] = { pos = 2997, section = 2 },
['Purple Chief Indented Banner'] = { pos = 2998, section = 2 },
['Purple Chief Sinister Canton Banner'] = { pos = 2999, section = 2 },
['Purple Cloth'] = { pos = 241, section = 40 },
['Purple Concrete'] = { pos = 1511, section = 7 },
['Purple Concrete Powder'] = { pos = 1512, section = 7 },
['Purple Creeper Charge Banner'] = { pos = 3000, section = 2 },
['Purple Cross Banner'] = { pos = 3001, section = 2 },
['Purple Dye'] = { pos = 3168, section = 6 },
['Purple Fess Banner'] = { pos = 3002, section = 2 },
['Purple Field Masoned Banner'] = { pos = 3003, section = 2 },
['Purple Firework Star'] = { pos = 818, section = 9 },
['Purple Flask'] = { pos = 1912, section = 36 },
['Purple Flower Charge Banner'] = { pos = 3004, section = 2 },
['Purple Glazed Terracotta'] = { pos = 1513, section = 7 },
['Purple Globe Banner'] = { pos = 48, section = 2 },
['Purple Glow Stick'] = { pos = 2004, section = 33 },
['Purple Gradient Banner'] = { pos = 3005, section = 2 },
['Purple Inverted Chevron Banner'] = { pos = 3006, section = 2 },
['Purple Jar'] = { pos = 1926, section = 37 },
['Purple Lozenge Banner'] = { pos = 3007, section = 2 },
['Purple Pale Banner'] = { pos = 3008, section = 2 },
['Purple Pale Dexter Banner'] = { pos = 3009, section = 2 },
['Purple Pale Sinister Banner'] = { pos = 3010, section = 2 },
['Purple Paly Banner'] = { pos = 3011, section = 2 },
['Purple Per Bend Banner'] = { pos = 3012, section = 2 },
['Purple Per Bend Inverted Banner'] = { pos = 3013, section = 2 },
['Purple Per Bend Sinister Banner'] = { pos = 3014, section = 2 },
['Purple Per Bend Sinister Inverted Banner'] = { pos = 3015, section = 2 },
['Purple Per Fess Banner'] = { pos = 3016, section = 2 },
['Purple Per Fess Inverted Banner'] = { pos = 3017, section = 2 },
['Purple Per Pale Banner'] = { pos = 3018, section = 2 },
['Purple Per Pale Inverted Banner'] = { pos = 3019, section = 2 },
['Purple Piglin Banner'] = { pos = 371, section = 2 },
['Purple Roundel Banner'] = { pos = 3020, section = 2 },
['Purple Saltire Banner'] = { pos = 3021, section = 2 },
['Purple Shield'] = { pos = 2525, section = 1 },
['Purple Shulker Box'] = { pos = 1428, section = 7 },
['Purple Skull Charge Banner'] = { pos = 3022, section = 2 },
['Purple Snout Banner'] = { pos = 371, section = 2 },
['Purple Sparkler'] = { pos = 1760, section = 33 },
['Purple Sparkler (active)'] = { pos = 1761, section = 33 },
['Purple Stained Glass'] = { pos = 779, section = 7 },
['Purple Stained Glass Pane'] = { pos = 780, section = 7 },
['Purple Stained Glass Pane BE'] = { pos = 2020, section = 7 },
['Purple Terracotta'] = { pos = 778, section = 7 },
['Purple Thing Banner'] = { pos = 3023, section = 2 },
['Purple Tinted Glass'] = { pos = 1311, section = 40 },
['Purple Tinted Glass Pane'] = { pos = 15, section = 40 },
['Purple Torch'] = { pos = 1762, section = 33 },
['Purple Wood Planks'] = { pos = 256, section = 30 },
['Purple Wool'] = { pos = 1535, section = 7 },
['Purple Wool Revision 2'] = { pos = 781, section = 40 },
['Purpur Block'] = { pos = 910, section = 12 },
['Purpur Pillar'] = { pos = 911, section = 12 },
['Purpur Slab'] = { pos = 3293, section = 12 },
['Purpur Stairs'] = { pos = 3294, section = 12 },
['Quartz Bricks'] = { pos = 288, section = 12 },
['Quartz Pillar'] = { pos = 906, section = 12 },
['Quartz Slab'] = { pos = 3295, section = 12 },
['Quartz Stairs'] = { pos = 3296, section = 12 },
['Quartz Trim Chainmail Boots'] = { pos = 1096, section = 43 },
['Quartz Trim Chainmail Chestplate'] = { pos = 1098, section = 43 },
['Quartz Trim Chainmail Helmet'] = { pos = 1099, section = 43 },
['Quartz Trim Chainmail Leggings'] = { pos = 1101, section = 43 },
['Quartz Trim Diamond Boots'] = { pos = 1102, section = 43 },
['Quartz Trim Diamond Chestplate'] = { pos = 1103, section = 43 },
['Quartz Trim Diamond Helmet'] = { pos = 1104, section = 43 },
['Quartz Trim Diamond Leggings'] = { pos = 1105, section = 43 },
['Quartz Trim Golden Boots'] = { pos = 1106, section = 43 },
['Quartz Trim Golden Chestplate'] = { pos = 1107, section = 43 },
['Quartz Trim Golden Helmet'] = { pos = 1108, section = 43 },
['Quartz Trim Golden Leggings'] = { pos = 1109, section = 43 },
['Quartz Trim Iron Boots'] = { pos = 1110, section = 43 },
['Quartz Trim Iron Chestplate'] = { pos = 1111, section = 43 },
['Quartz Trim Iron Helmet'] = { pos = 1112, section = 43 },
['Quartz Trim Iron Leggings'] = { pos = 1113, section = 43 },
['Quartz Trim Leather Boots'] = { pos = 1114, section = 43 },
['Quartz Trim Leather Cap'] = { pos = 1115, section = 43 },
['Quartz Trim Leather Pants'] = { pos = 1116, section = 43 },
['Quartz Trim Leather Tunic'] = { pos = 1117, section = 43 },
['Quartz Trim Netherite Boots'] = { pos = 1118, section = 43 },
['Quartz Trim Netherite Chestplate'] = { pos = 1120, section = 43 },
['Quartz Trim Netherite Helmet'] = { pos = 1121, section = 43 },
['Quartz Trim Netherite Leggings'] = { pos = 1122, section = 43 },
['Quartz Trim Turtle Shell'] = { pos = 1123, section = 43 },
Quiver = { pos = 2088, section = 30 },
['Rabbit Hide'] = { pos = 3527, section = 23 },
['Rabbit Spawn Egg'] = { pos = 1157, section = 24 },
['Rabbit Stew'] = { pos = 3212, section = 10 },
["Rabbit's Foot"] = { pos = 3144, section = 3 },
Radium = { pos = 1856, section = 34 },
Radon = { pos = 1857, section = 34 },
Rail = { pos = 3344, section = 13 },
['Rainbow Bed'] = { pos = 3646, section = 38 },
['Rainbow Carpet'] = { pos = 3647, section = 38 },
['Rainbow Wool'] = { pos = 3648, section = 38 },
['Raiser Armor Trim'] = { pos = 1215, section = 41 },
['Raiser Armor Trim Smithing Template'] = { pos = 1215, section = 41 },
['Ravager Spawn Egg'] = { pos = 2411, section = 24 },
['Raw Beef'] = { pos = 3213, section = 10 },
['Raw Chicken'] = { pos = 3214, section = 10 },
['Raw Cod'] = { pos = 1693, section = 10 },
['Raw Copper'] = { pos = 542, section = 23 },
['Raw Fish'] = { pos = 842, section = 10 },
['Raw Fish Revision 1'] = { pos = 842, section = 10 },
['Raw Gold'] = { pos = 543, section = 23 },
['Raw Iron'] = { pos = 544, section = 23 },
['Raw Mutton'] = { pos = 3215, section = 10 },
['Raw Porkchop'] = { pos = 3216, section = 10 },
['Raw Rabbit'] = { pos = 3217, section = 10 },
['Raw Salmon'] = { pos = 1694, section = 10 },
['Raw Salmon 3DS'] = { pos = 846, section = 10 },
['Raw Salmon Revision 1'] = { pos = 846, section = 10 },
['Reality Vision'] = { pos = 1638, section = 32 },
['Recipe Book'] = { pos = 385, section = 30 },
['Recovery Compass'] = { pos = 623, section = 25 },
['Red Balloon'] = { pos = 1944, section = 33 },
['Red Banner'] = { pos = 782, section = 7 },
['Red Banner 15w14a'] = { pos = 485, section = 32 },
['Red Base Banner'] = { pos = 3024, section = 2 },
['Red Base Dexter Canton Banner'] = { pos = 3025, section = 2 },
['Red Base Gradient Banner'] = { pos = 3026, section = 2 },
['Red Base Indented Banner'] = { pos = 3027, section = 2 },
['Red Base Sinister Canton Banner'] = { pos = 3028, section = 2 },
['Red Beaker'] = { pos = 1901, section = 35 },
['Red Bed'] = { pos = 3184, section = 7 },
['Red Bed BE'] = { pos = 1558, section = 7 },
['Red Bed LCE'] = { pos = 1558, section = 7 },
['Red Bed Revision 1'] = { pos = 1558, section = 7 },
['Red Bend Banner'] = { pos = 3029, section = 2 },
['Red Bend Sinister Banner'] = { pos = 3030, section = 2 },
['Red Bordure Banner'] = { pos = 3032, section = 2 },
['Red Bordure Indented Banner'] = { pos = 3031, section = 2 },
['Red Candle'] = { pos = 422, section = 7 },
['Red Carpet'] = { pos = 1634, section = 7 },
['Red Carpet Revision 1'] = { pos = 783, section = 40 },
['Red Chevron Banner'] = { pos = 3033, section = 2 },
['Red Chief Banner'] = { pos = 3034, section = 2 },
['Red Chief Dexter Canton Banner'] = { pos = 3035, section = 2 },
['Red Chief Indented Banner'] = { pos = 3036, section = 2 },
['Red Chief Sinister Canton Banner'] = { pos = 3037, section = 2 },
['Red Cloth'] = { pos = 239, section = 40 },
['Red Concrete'] = { pos = 1514, section = 7 },
['Red Concrete Powder'] = { pos = 1515, section = 7 },
['Red Creeper Charge Banner'] = { pos = 3038, section = 2 },
['Red Cross Banner'] = { pos = 3039, section = 2 },
['Red Dye'] = { pos = 3169, section = 6 },
['Red Fess Banner'] = { pos = 3040, section = 2 },
['Red Field Masoned Banner'] = { pos = 3041, section = 2 },
['Red Firework Star'] = { pos = 819, section = 9 },
['Red Flask'] = { pos = 1913, section = 36 },
['Red Flower Charge Banner'] = { pos = 3042, section = 2 },
['Red Glazed Terracotta'] = { pos = 1516, section = 7 },
['Red Globe Banner'] = { pos = 49, section = 2 },
['Red Glow Stick'] = { pos = 2005, section = 33 },
['Red Gradient Banner'] = { pos = 3043, section = 2 },
['Red Inverted Chevron Banner'] = { pos = 3044, section = 2 },
['Red Jar'] = { pos = 1927, section = 37 },
['Red Key'] = { pos = 452, section = 32 },
['Red Lozenge Banner'] = { pos = 3045, section = 2 },
['Red Mushroom'] = { pos = 3439, section = 19 },
['Red Mushroom Block'] = { pos = 3438, section = 19 },
['Red Nether Brick Slab'] = { pos = 3297, section = 12 },
['Red Nether Brick Stairs'] = { pos = 3298, section = 12 },
['Red Nether Brick Wall'] = { pos = 3299, section = 12 },
['Red Nether Brick Wall BE'] = { pos = 30, section = 12 },
['Red Nether Bricks'] = { pos = 1367, section = 12 },
['Red Pale Banner'] = { pos = 3046, section = 2 },
['Red Pale Dexter Banner'] = { pos = 3047, section = 2 },
['Red Pale Sinister Banner'] = { pos = 3048, section = 2 },
['Red Paly Banner'] = { pos = 3049, section = 2 },
['Red Per Bend Banner'] = { pos = 3050, section = 2 },
['Red Per Bend Inverted Banner'] = { pos = 3051, section = 2 },
['Red Per Bend Sinister Banner'] = { pos = 3052, section = 2 },
['Red Per Bend Sinister Inverted Banner'] = { pos = 3053, section = 2 },
['Red Per Fess Banner'] = { pos = 3054, section = 2 },
['Red Per Fess Inverted Banner'] = { pos = 3055, section = 2 },
['Red Per Pale Banner'] = { pos = 3056, section = 2 },
['Red Per Pale Inverted Banner'] = { pos = 3057, section = 2 },
['Red Piglin Banner'] = { pos = 372, section = 2 },
['Red Roundel Banner'] = { pos = 3058, section = 2 },
['Red Saltire Banner'] = { pos = 3059, section = 2 },
['Red Sand'] = { pos = 3374, section = 15 },
['Red Sandstone'] = { pos = 3375, section = 15 },
['Red Sandstone Slab'] = { pos = 3300, section = 12 },
['Red Sandstone Stairs'] = { pos = 3301, section = 12 },
['Red Sandstone Wall'] = { pos = 3302, section = 12 },
['Red Sandstone Wall BE'] = { pos = 31, section = 12 },
['Red Shield'] = { pos = 2526, section = 1 },
['Red Shulker Box'] = { pos = 1616, section = 7 },
['Red Shulker Box Revision 1'] = { pos = 1429, section = 40 },
['Red Skull Charge Banner'] = { pos = 3060, section = 2 },
['Red Snout Banner'] = { pos = 372, section = 2 },
['Red Sparkler'] = { pos = 1763, section = 33 },
['Red Sparkler (active)'] = { pos = 1764, section = 33 },
['Red Stained Glass'] = { pos = 785, section = 7 },
['Red Stained Glass Pane'] = { pos = 786, section = 7 },
['Red Stained Glass Pane BE'] = { pos = 2021, section = 7 },
['Red Terracotta'] = { pos = 784, section = 7 },
['Red Thing Banner'] = { pos = 3061, section = 2 },
['Red Tinted Glass'] = { pos = 1312, section = 40 },
['Red Tinted Glass Pane'] = { pos = 16, section = 40 },
['Red Torch'] = { pos = 1765, section = 33 },
['Red Tulip'] = { pos = 3440, section = 19 },
['Red Wood Planks'] = { pos = 257, section = 30 },
['Red Wool'] = { pos = 1536, section = 7 },
['Red Wool Revision 2'] = { pos = 787, section = 40 },
Redstone = { pos = 3528, section = 23 },
['Redstone Comparator'] = { pos = 3345, section = 13 },
['Redstone Dust'] = { pos = 3528, section = 23 },
['Redstone Lamp'] = { pos = 3346, section = 13 },
['Redstone Lamp Post-Flip'] = { pos = 381, section = 29 },
['Redstone Ore'] = { pos = 3397, section = 18 },
['Redstone Repeater'] = { pos = 3347, section = 13 },
['Redstone Revision 1'] = { pos = 1138, section = 29 },
['Redstone Torch'] = { pos = 3348, section = 13 },
['Redstone Trim Chainmail Boots'] = { pos = 1124, section = 43 },
['Redstone Trim Chainmail Chestplate'] = { pos = 1125, section = 43 },
['Redstone Trim Chainmail Helmet'] = { pos = 1126, section = 43 },
['Redstone Trim Chainmail Leggings'] = { pos = 1127, section = 43 },
['Redstone Trim Diamond Boots'] = { pos = 1128, section = 43 },
['Redstone Trim Diamond Chestplate'] = { pos = 1129, section = 43 },
['Redstone Trim Diamond Helmet'] = { pos = 1130, section = 43 },
['Redstone Trim Diamond Leggings'] = { pos = 1131, section = 43 },
['Redstone Trim Golden Boots'] = { pos = 1132, section = 43 },
['Redstone Trim Golden Chestplate'] = { pos = 1133, section = 43 },
['Redstone Trim Golden Helmet'] = { pos = 1134, section = 43 },
['Redstone Trim Golden Leggings'] = { pos = 1135, section = 43 },
['Redstone Trim Iron Boots'] = { pos = 1136, section = 43 },
['Redstone Trim Iron Chestplate'] = { pos = 1137, section = 43 },
['Redstone Trim Iron Helmet'] = { pos = 1139, section = 43 },
['Redstone Trim Iron Leggings'] = { pos = 1141, section = 43 },
['Redstone Trim Leather Boots'] = { pos = 1170, section = 43 },
['Redstone Trim Leather Cap'] = { pos = 1171, section = 43 },
['Redstone Trim Leather Pants'] = { pos = 1172, section = 43 },
['Redstone Trim Leather Tunic'] = { pos = 1173, section = 43 },
['Redstone Trim Netherite Boots'] = { pos = 1174, section = 43 },
['Redstone Trim Netherite Chestplate'] = { pos = 1175, section = 43 },
['Redstone Trim Netherite Helmet'] = { pos = 1176, section = 43 },
['Redstone Trim Netherite Leggings'] = { pos = 1177, section = 43 },
['Redstone Trim Turtle Shell'] = { pos = 1178, section = 43 },
['Reinforced Deepslate'] = { pos = 582, section = 5 },
['Respawn Anchor'] = { pos = 207, section = 12 },
Rhenium = { pos = 1858, section = 34 },
Rhodium = { pos = 1859, section = 34 },
['Rib Armor Trim'] = { pos = 802, section = 41 },
['Rib Armor Trim Smithing Template'] = { pos = 802, section = 41 },
['Right Curly'] = { pos = 1284, section = 32 },
['Right Square'] = { pos = 1285, section = 32 },
Roentgenium = { pos = 1860, section = 34 },
['Rooted Dirt'] = { pos = 463, section = 15 },
Rose = { pos = 1065, section = 29 },
['Rose BE'] = { pos = 1079, section = 29 },
['Rose Bush'] = { pos = 3441, section = 19 },
['Rose Bush 3DS'] = { pos = 1573, section = 29 },
['Rose Bush BE Revision 2'] = { pos = 1573, section = 29 },
['Rose Bush LCE Revision 2'] = { pos = 1573, section = 29 },
['Rose Cloth'] = { pos = 237, section = 40 },
['Rose Red'] = { pos = 703, section = 6 },
['Rotten Flesh'] = { pos = 3218, section = 10 },
Rubidium = { pos = 1861, section = 34 },
Ruby = { pos = 1313, section = 29 },
['Ruby Ore'] = { pos = 2242, section = 29 },
Ruthenium = { pos = 1862, section = 34 },
Rutherfordium = { pos = 1863, section = 34 },
Saddle = { pos = 3582, section = 25 },
['Salmon Spawn Egg'] = { pos = 1699, section = 24 },
['Salmon Spawn Egg Revision 1'] = { pos = 1970, section = 39 },
Salt = { pos = 1766, section = 33 },
Samarium = { pos = 1864, section = 34 },
Sand = { pos = 3376, section = 15 },
Sandstone = { pos = 3377, section = 15 },
['Sandstone Slab'] = { pos = 3303, section = 12 },
['Sandstone Stairs'] = { pos = 3304, section = 12 },
['Sandstone Stairs Left'] = { pos = 2262, section = 42 },
['Sandstone Wall'] = { pos = 3305, section = 12 },
['Sandstone Wall BE'] = { pos = 32, section = 12 },
['Savanna Village Map'] = { pos = 1326, section = 25 },
['Savanna Village Map BE'] = { pos = 1327, section = 25 },
Scaffolding = { pos = 2414, section = 12 },
['Scaffolding BE'] = { pos = 1068, section = 12 },
Scandium = { pos = 1865, section = 34 },
Sculk = { pos = 556, section = 15 },
['Sculk Block'] = { pos = 556, section = 15 },
['Sculk Catalyst'] = { pos = 557, section = 15 },
['Sculk Catalyst BE'] = { pos = 628, section = 15 },
['Sculk Sensor'] = { pos = 439, section = 13 },
['Sculk Sensor BE'] = { pos = 458, section = 13 },
['Sculk Shrieker'] = { pos = 613, section = 15 },
['Sculk Shrieker BE'] = { pos = 558, section = 15 },
['Sculk Vein'] = { pos = 559, section = 15 },
Scute = { pos = 1684, section = 23 },
['Sea Lantern BE'] = { pos = 209, section = 15 },
['Sea Pickle'] = { pos = 1736, section = 19 },
Seaborgium = { pos = 1866, section = 34 },
Seagrass = { pos = 2029, section = 19 },
Seeds = { pos = 1067, section = 19 },
Selenium = { pos = 1867, section = 34 },
['Sentry Armor Trim'] = { pos = 803, section = 41 },
['Sentry Armor Trim Smithing Template'] = { pos = 803, section = 41 },
['Shaper Armor Trim'] = { pos = 1216, section = 41 },
['Shaper Armor Trim Smithing Template'] = { pos = 1216, section = 41 },
['Sheaf Pottery Sherd'] = { pos = 1233, section = 44 },
Shears = { pos = 3583, section = 25 },
['Sheep Spawn Egg'] = { pos = 1158, section = 24 },
['Sheep Spawn Egg Revision 1'] = { pos = 1392, section = 39 },
['Shelter Pottery Sherd'] = { pos = 1234, section = 44 },
Shield = { pos = 2527, section = 1 },
['Short Tag'] = { pos = 1286, section = 32 },
Shroomlight = { pos = 151, section = 16 },
['Shroomlight BE'] = { pos = 211, section = 16 },
['Shrub LCE'] = { pos = 1039, section = 19 },
['Shulker Box'] = { pos = 1615, section = 7 },
['Shulker Shell'] = { pos = 3529, section = 23 },
['Shulker Spawn Egg'] = { pos = 1159, section = 24 },
['Shulker Spawn Egg Revision 1'] = { pos = 1564, section = 39 },
['Sign Revision 1'] = { pos = 354, section = 29 },
['Silence Armor Trim'] = { pos = 1217, section = 41 },
['Silence Armor Trim Smithing Template'] = { pos = 1217, section = 41 },
Silicon = { pos = 1868, section = 34 },
Silver = { pos = 1775, section = 34 },
['Silver Balloon'] = { pos = 1945, section = 33 },
['Silverfish Spawn Egg'] = { pos = 1160, section = 24 },
['Silverfish Spawn Egg Revision 1'] = { pos = 1393, section = 39 },
['Silverfish Spawn Egg Revision 2'] = { pos = 1565, section = 39 },
['Skeleton Horse Spawn Egg'] = { pos = 1376, section = 24 },
['Skeleton Skull'] = { pos = 967, section = 14 },
['Skeleton Skull BE'] = { pos = 218, section = 14 },
['Skeleton Spawn Egg'] = { pos = 1161, section = 24 },
['Skeleton Spawn Egg Revision 1'] = { pos = 1394, section = 39 },
['Skull Pottery Sherd'] = { pos = 1204, section = 44 },
Slate = { pos = 1596, section = 20 },
['Slightly Damaged Anvil'] = { pos = 1253, section = 26 },
['Slime Block'] = { pos = 920, section = 12 },
['Slime Spawn Egg'] = { pos = 1162, section = 24 },
['Slime Spawn Egg Revision 1'] = { pos = 1395, section = 39 },
Slimeball = { pos = 3530, section = 23 },
['Small Amethyst Bud'] = { pos = 427, section = 15 },
['Small Dripleaf'] = { pos = 470, section = 19 },
['Smarter Watch'] = { pos = 1639, section = 32 },
['Smithing Table'] = { pos = 2454, section = 26 },
['Smithing Table Revision 1'] = { pos = 2447, section = 26 },
['Smithing Template'] = { pos = 801, section = 41 },
Smoker = { pos = 2448, section = 26 },
['Smooth Basalt'] = { pos = 519, section = 15 },
['Smooth Quartz'] = { pos = 867, section = 12 },
['Smooth Quartz Block'] = { pos = 867, section = 12 },
['Smooth Quartz Slab'] = { pos = 3306, section = 12 },
['Smooth Quartz Stairs'] = { pos = 3307, section = 12 },
['Smooth Red Sandstone'] = { pos = 3310, section = 12 },
['Smooth Red Sandstone Slab'] = { pos = 3308, section = 12 },
['Smooth Red Sandstone Stairs'] = { pos = 3309, section = 12 },
['Smooth Sandstone'] = { pos = 3313, section = 12 },
['Smooth Sandstone Slab'] = { pos = 3311, section = 12 },
['Smooth Sandstone Stairs'] = { pos = 3312, section = 12 },
['Smooth Stone'] = { pos = 923, section = 12 },
['Smooth Stone Bricks'] = { pos = 3380, section = 15 },
['Smooth Stone Slab'] = { pos = 3314, section = 12 },
['Sniffer Egg'] = { pos = 1211, section = 5 },
['Sniffer Spawn Egg'] = { pos = 1205, section = 24 },
['Snort Pottery Sherd'] = { pos = 1236, section = 44 },
['Snout Armor Trim'] = { pos = 808, section = 41 },
['Snout Armor Trim Smithing Template'] = { pos = 808, section = 41 },
Snow = { pos = 3378, section = 15 },
['Snow Block'] = { pos = 3315, section = 12 },
['Snow Golem Spawn Egg'] = { pos = 697, section = 24 },
Snowball = { pos = 3638, section = 28 },
['Snowy Village Map'] = { pos = 1326, section = 25 },
['Snowy Village Map BE'] = { pos = 1327, section = 25 },
Soap = { pos = 1915, section = 37 },
Sodium = { pos = 1836, section = 34 },
['Sodium Acetate'] = { pos = 1915, section = 37 },
['Sodium Fluoride'] = { pos = 1897, section = 35 },
['Sodium Hydride'] = { pos = 1923, section = 37 },
['Sodium Hypochlorite'] = { pos = 1889, section = 35 },
['Sodium Oxide'] = { pos = 1915, section = 37 },
['Soul Campfire'] = { pos = 287, section = 26 },
['Soul Fire Lantern Revision 1'] = { pos = 195, section = 29 },
['Soul Lantern'] = { pos = 157, section = 26 },
['Soul Sand'] = { pos = 3388, section = 16 },
['Soul Soil'] = { pos = 152, section = 16 },
['Soul Torch'] = { pos = 156, section = 17 },
['Spawn Agent'] = { pos = 2379, section = 24 },
['Spawn Allay'] = { pos = 901, section = 24 },
['Spawn Axolotl'] = { pos = 440, section = 24 },
['Spawn Bat'] = { pos = 1142, section = 24 },
['Spawn Bee'] = { pos = 104, section = 24 },
['Spawn Blaze'] = { pos = 1143, section = 24 },
['Spawn Camel'] = { pos = 683, section = 24 },
['Spawn Cat'] = { pos = 2380, section = 24 },
['Spawn Cat BE'] = { pos = 2380, section = 24 },
['Spawn Cave Spider'] = { pos = 1144, section = 24 },
['Spawn Chicken'] = { pos = 1145, section = 24 },
['Spawn Cod'] = { pos = 1697, section = 24 },
['Spawn Cow'] = { pos = 1146, section = 24 },
['Spawn Creeper'] = { pos = 1147, section = 24 },
['Spawn Dolphin'] = { pos = 1967, section = 24 },
['Spawn Donkey'] = { pos = 1371, section = 24 },
['Spawn Drowned'] = { pos = 1727, section = 24 },
['Spawn Egg'] = { pos = 2361, section = 39 },
['Spawn Elder Guardian'] = { pos = 1372, section = 24 },
['Spawn Ender Dragon'] = { pos = 695, section = 24 },
['Spawn Enderman'] = { pos = 1148, section = 24 },
['Spawn Endermite'] = { pos = 1149, section = 24 },
['Spawn Evoker'] = { pos = 1411, section = 24 },
['Spawn Firefly'] = { pos = 632, section = 24 },
['Spawn Fox'] = { pos = 2464, section = 24 },
['Spawn Frog'] = { pos = 575, section = 24 },
['Spawn Ghast'] = { pos = 1150, section = 24 },
['Spawn Glow Squid'] = { pos = 457, section = 24 },
['Spawn Goat'] = { pos = 392, section = 24 },
['Spawn Guardian'] = { pos = 1151, section = 24 },
['Spawn Hoglin'] = { pos = 194, section = 24 },
['Spawn Horse'] = { pos = 1152, section = 24 },
['Spawn Husk'] = { pos = 1373, section = 24 },
['Spawn Iron Golem'] = { pos = 696, section = 24 },
['Spawn Llama'] = { pos = 1412, section = 24 },
['Spawn Magma Cube'] = { pos = 1153, section = 24 },
['Spawn Mask'] = { pos = 2381, section = 24 },
['Spawn Mooshroom'] = { pos = 1154, section = 24 },
['Spawn Mule'] = { pos = 1374, section = 24 },
['Spawn NPC'] = { pos = 1590, section = 24 },
['Spawn Ocelot'] = { pos = 1155, section = 24 },
['Spawn Panda'] = { pos = 2374, section = 24 },
['Spawn Panda BE'] = { pos = 2374, section = 24 },
['Spawn Parrot'] = { pos = 1544, section = 24 },
['Spawn Phantom'] = { pos = 1974, section = 24 },
['Spawn Pig'] = { pos = 1156, section = 24 },
['Spawn Piglin Brute'] = { pos = 262, section = 24 },
['Spawn Pillager'] = { pos = 2413, section = 24 },
['Spawn Polar Bear'] = { pos = 1375, section = 24 },
['Spawn Pufferfish'] = { pos = 1698, section = 24 },
['Spawn Rabbit'] = { pos = 1157, section = 24 },
['Spawn Ravager'] = { pos = 2411, section = 24 },
['Spawn Salmon'] = { pos = 1699, section = 24 },
['Spawn Sheep'] = { pos = 1158, section = 24 },
['Spawn Shulker'] = { pos = 1159, section = 24 },
['Spawn Silverfish'] = { pos = 1160, section = 24 },
['Spawn Skeleton'] = { pos = 1161, section = 24 },
['Spawn Skeleton Horse'] = { pos = 1376, section = 24 },
['Spawn Slime'] = { pos = 1162, section = 24 },
['Spawn Snow Golem'] = { pos = 697, section = 24 },
['Spawn Spider'] = { pos = 1163, section = 24 },
['Spawn Squid'] = { pos = 1164, section = 24 },
['Spawn Stray'] = { pos = 1377, section = 24 },
['Spawn Strider'] = { pos = 223, section = 24 },
['Spawn Tadpole'] = { pos = 576, section = 24 },
['Spawn Trader Llama'] = { pos = 2462, section = 24 },
['Spawn Tropical Fish'] = { pos = 1722, section = 24 },
['Spawn Turtle'] = { pos = 1729, section = 24 },
['Spawn Vex'] = { pos = 1413, section = 24 },
['Spawn Villager'] = { pos = 1165, section = 24 },
['Spawn Vindicator'] = { pos = 1414, section = 24 },
['Spawn Wandering Trader'] = { pos = 389, section = 24 },
['Spawn Wandering Trader BE'] = { pos = 389, section = 24 },
['Spawn Warden'] = { pos = 581, section = 24 },
['Spawn Witch'] = { pos = 1166, section = 24 },
['Spawn Wither Skeleton'] = { pos = 1378, section = 24 },
['Spawn Wolf'] = { pos = 1167, section = 24 },
['Spawn Zoglin'] = { pos = 268, section = 24 },
['Spawn Zombie'] = { pos = 1168, section = 24 },
['Spawn Zombie Horse'] = { pos = 1379, section = 24 },
['Spawn Zombie Pigman'] = { pos = 1169, section = 24 },
['Spawn Zombie Villager'] = { pos = 1349, section = 24 },
Spawner = { pos = 985, section = 15 },
['Spectral Arrow'] = { pos = 3639, section = 28 },
['Spectral Arrow Revision 1'] = { pos = 1291, section = 28 },
['Spider Eye'] = { pos = 3145, section = 3 },
['Spider Spawn Egg'] = { pos = 1163, section = 24 },
['Spider Spawn Egg Revision 1'] = { pos = 1396, section = 39 },
['Spire Armor Trim'] = { pos = 822, section = 41 },
['Spire Armor Trim Smithing Template'] = { pos = 822, section = 41 },
['Splash Awkward Potion Revision 1'] = { pos = 332, section = 47 },
['Splash Bottle of Mob'] = { pos = 1287, section = 32 },
['Splash Mundane Potion'] = { pos = 1100, section = 22 },
['Splash Mundane Potion Revision 1'] = { pos = 333, section = 47 },
['Splash Potion of Big'] = { pos = 1288, section = 32 },
['Splash Potion of Decay'] = { pos = 1404, section = 22 },
['Splash Potion of Fire Resistance'] = { pos = 3468, section = 22 },
['Splash Potion of Fire Resistance Revision 1'] = { pos = 334, section = 47 },
['Splash Potion of Harming'] = { pos = 3469, section = 22 },
['Splash Potion of Harming Revision 1'] = { pos = 335, section = 47 },
['Splash Potion of Healing'] = { pos = 3470, section = 22 },
['Splash Potion of Healing Revision 1'] = { pos = 336, section = 47 },
['Splash Potion of Invisibility'] = { pos = 3471, section = 22 },
['Splash Potion of Invisibility Revision 1'] = { pos = 337, section = 47 },
['Splash Potion of Leaping'] = { pos = 3472, section = 22 },
['Splash Potion of Leaping Revision 1'] = { pos = 338, section = 47 },
['Splash Potion of Levitation'] = { pos = 115, section = 22 },
['Splash Potion of Luck'] = { pos = 3473, section = 22 },
['Splash Potion of Luck Revision 1'] = { pos = 339, section = 47 },
['Splash Potion of Night Vision'] = { pos = 3474, section = 22 },
['Splash Potion of Night Vision Revision 1'] = { pos = 340, section = 47 },
['Splash Potion of Poison'] = { pos = 3475, section = 22 },
['Splash Potion of Poison Revision 1'] = { pos = 341, section = 47 },
['Splash Potion of Regeneration'] = { pos = 3476, section = 22 },
['Splash Potion of Regeneration Revision 1'] = { pos = 342, section = 47 },
['Splash Potion of Slow Falling'] = { pos = 3477, section = 22 },
['Splash Potion of Slow Falling Revision 1'] = { pos = 343, section = 47 },
['Splash Potion of Slowness'] = { pos = 3478, section = 22 },
['Splash Potion of Slowness Revision 1'] = { pos = 344, section = 47 },
['Splash Potion of Small'] = { pos = 1289, section = 32 },
['Splash Potion of Strength'] = { pos = 3479, section = 22 },
['Splash Potion of Strength Revision 1'] = { pos = 345, section = 47 },
['Splash Potion of Swiftness'] = { pos = 3480, section = 22 },
['Splash Potion of Swiftness Revision 1'] = { pos = 346, section = 47 },
['Splash Potion of the Turtle Master'] = { pos = 3481, section = 22 },
['Splash Potion of the Turtle Master Revision 1'] = { pos = 347, section = 47 },
['Splash Potion of Water Breathing'] = { pos = 3467, section = 22 },
['Splash Potion of Water Breathing Revision 1'] = { pos = 348, section = 47 },
['Splash Potion of Weakness'] = { pos = 3482, section = 22 },
['Splash Thick Potion Revision 1'] = { pos = 349, section = 47 },
['Splash Uncraftable Potion Revision 1'] = { pos = 350, section = 47 },
['Splash Water Bottle'] = { pos = 1100, section = 22 },
['Splash Water Bottle Revision 1'] = { pos = 351, section = 47 },
Sponge = { pos = 3613, section = 26 },
['Sponge Revision 1'] = { pos = 2243, section = 29 },
['Spore Blossom'] = { pos = 471, section = 19 },
['Spring Green Cloth'] = { pos = 240, section = 40 },
['Spruce Boat'] = { pos = 634, section = 27 },
['Spruce Boat Revision 2'] = { pos = 3629, section = 29 },
['Spruce Boat with Chest'] = { pos = 619, section = 27 },
['Spruce Boat with Chest BE Revision 1'] = { pos = 617, section = 29 },
['Spruce Button'] = { pos = 3349, section = 13 },
['Spruce Door'] = { pos = 572, section = 13 },
['Spruce Door Revision 3'] = { pos = 954, section = 13 },
['Spruce Fence'] = { pos = 642, section = 12 },
['Spruce Fence BE'] = { pos = 3317, section = 12 },
['Spruce Fence Gate'] = { pos = 3316, section = 13 },
['Spruce Fence Gate BE'] = { pos = 57, section = 13 },
['Spruce Hanging Sign'] = { pos = 660, section = 5 },
['Spruce Leaves'] = { pos = 3442, section = 19 },
['Spruce Log'] = { pos = 3443, section = 19 },
['Spruce Log Revision 1'] = { pos = 2244, section = 29 },
['Spruce Planks'] = { pos = 929, section = 12 },
['Spruce Pressure Plate'] = { pos = 3350, section = 13 },
['Spruce Sapling'] = { pos = 3444, section = 19 },
['Spruce Sign'] = { pos = 2394, section = 17 },
['Spruce Slab'] = { pos = 3318, section = 12 },
['Spruce Stairs'] = { pos = 3319, section = 12 },
['Spruce Stairs Left'] = { pos = 2263, section = 42 },
['Spruce Trapdoor'] = { pos = 1647, section = 13 },
['Spruce Wood'] = { pos = 3320, section = 12 },
['Spruce Wood Button'] = { pos = 3349, section = 13 },
['Spruce Wood Door'] = { pos = 572, section = 13 },
['Spruce Wood Fence'] = { pos = 642, section = 12 },
['Spruce Wood Fence Gate'] = { pos = 3316, section = 13 },
['Spruce Wood Planks'] = { pos = 929, section = 12 },
['Spruce Wood Pressure Plate'] = { pos = 3350, section = 13 },
['Spruce Wood Sign'] = { pos = 2394, section = 17 },
['Spruce Wood Slab'] = { pos = 3318, section = 12 },
['Spruce Wood Stairs'] = { pos = 3319, section = 12 },
['Spruce Wood Trapdoor'] = { pos = 1647, section = 13 },
Spyglass = { pos = 428, section = 25 },
['Squid Spawn Egg'] = { pos = 1164, section = 24 },
['Squid Spawn Egg Revision 1'] = { pos = 1397, section = 39 },
['Sssyntax Error'] = { pos = 1290, section = 32 },
Stannum = { pos = 1869, section = 34 },
Steak = { pos = 848, section = 10 },
Stibium = { pos = 1774, section = 34 },
Stick = { pos = 1140, section = 23 },
['Sticky Piston'] = { pos = 3351, section = 13 },
['Still Lava'] = { pos = 2119, section = 29 },
Stone = { pos = 1000, section = 15 },
['Stone Axe'] = { pos = 3584, section = 25 },
['Stone Brick Slab'] = { pos = 933, section = 12 },
['Stone Brick Stairs'] = { pos = 3322, section = 12 },
['Stone Brick Stairs Left'] = { pos = 2264, section = 42 },
['Stone Brick Wall'] = { pos = 3323, section = 12 },
['Stone Brick Wall BE'] = { pos = 33, section = 12 },
['Stone Bricks'] = { pos = 3380, section = 15 },
['Stone Bricks Monster Egg'] = { pos = 3380, section = 15 },
['Stone Button'] = { pos = 3352, section = 13 },
['Stone Heart'] = { pos = 121, section = 32 },
['Stone Hoe'] = { pos = 3585, section = 25 },
['Stone Monster Egg'] = { pos = 1000, section = 15 },
['Stone Pickaxe'] = { pos = 3586, section = 25 },
['Stone Pressure Plate'] = { pos = 3353, section = 13 },
['Stone Pressure Plate Revision 1'] = { pos = 2091, section = 29 },
['Stone Revision 2'] = { pos = 376, section = 29 },
['Stone Shovel'] = { pos = 3587, section = 25 },
['Stone Slab'] = { pos = 3324, section = 12 },
['Stone Stairs'] = { pos = 3325, section = 12 },
['Stone Sword'] = { pos = 3640, section = 28 },
['Stonecutter BE'] = { pos = 1082, section = 20 },
['Stonecutter Revision 1'] = { pos = 2449, section = 26 },
['Stray Spawn Egg'] = { pos = 1377, section = 24 },
['Stray Spawn Egg Revision 1'] = { pos = 1566, section = 39 },
['Strider Spawn Egg'] = { pos = 223, section = 24 },
String = { pos = 3531, section = 23 },
['String Tag'] = { pos = 1292, section = 32 },
['Stripped Acacia Log'] = { pos = 1670, section = 12 },
['Stripped Acacia Wood'] = { pos = 2103, section = 12 },
['Stripped Birch Log'] = { pos = 1671, section = 12 },
['Stripped Birch Wood'] = { pos = 2101, section = 12 },
['Stripped Cherry Log'] = { pos = 1186, section = 12 },
['Stripped Cherry Wood'] = { pos = 1187, section = 12 },
['Stripped Crimson Hyphae'] = { pos = 200, section = 16 },
['Stripped Crimson Stem'] = { pos = 175, section = 16 },
['Stripped Dark Oak Log'] = { pos = 1672, section = 12 },
['Stripped Dark Oak Wood'] = { pos = 2104, section = 12 },
['Stripped Jungle Log'] = { pos = 1673, section = 12 },
['Stripped Jungle Wood'] = { pos = 2102, section = 12 },
['Stripped Mangrove Log'] = { pos = 597, section = 12 },
['Stripped Mangrove Wood'] = { pos = 598, section = 12 },
['Stripped Oak Log'] = { pos = 1674, section = 12 },
['Stripped Oak Wood'] = { pos = 2099, section = 12 },
['Stripped Spruce Log'] = { pos = 1675, section = 12 },
['Stripped Spruce Wood'] = { pos = 2100, section = 12 },
['Stripped Warped Hyphae'] = { pos = 201, section = 16 },
['Stripped Warped Stem'] = { pos = 176, section = 16 },
Strontium = { pos = 1870, section = 34 },
['Structure Block'] = { pos = 1380, section = 26 },
['Structure Void'] = { pos = 3614, section = 26 },
['Structure Void BE'] = { pos = 60, section = 26 },
['Studded Boots'] = { pos = 2172, section = 30 },
['Studded Chestplate'] = { pos = 2173, section = 30 },
['Studded Helmet'] = { pos = 2174, section = 30 },
['Studded Leggings'] = { pos = 2175, section = 30 },
Sugar = { pos = 3219, section = 10 },
['Sugar Cane'] = { pos = 548, section = 19 },
['Sugar Cane Revision 2'] = { pos = 3445, section = 29 },
Sulfate = { pos = 1915, section = 37 },
Sulfur = { pos = 1871, section = 34 },
Sunflower = { pos = 3446, section = 19 },
['Super Fertilizer'] = { pos = 1767, section = 33 },
['Suspicious Gravel'] = { pos = 1210, section = 15 },
['Suspicious Sand'] = { pos = 1193, section = 15 },
['Suspicious Stew'] = { pos = 2398, section = 10 },
['Swaggiest stairs ever'] = { pos = 486, section = 32 },
['Swamp Explorer Map'] = { pos = 1326, section = 25 },
['Swamp Explorer Map BE'] = { pos = 1327, section = 25 },
['Sweet Berries'] = { pos = 2457, section = 10 },
['Tadpole Spawn Egg'] = { pos = 576, section = 24 },
Tag = { pos = 1293, section = 32 },
['Taiga Village Map'] = { pos = 1326, section = 25 },
['Taiga Village Map BE'] = { pos = 1327, section = 25 },
['Tall Grass'] = { pos = 3447, section = 19 },
Tantalum = { pos = 1872, section = 34 },
Target = { pos = 196, section = 13 },
Technetium = { pos = 1873, section = 34 },
Tellurium = { pos = 1874, section = 34 },
Tennessine = { pos = 1875, section = 34 },
Terbium = { pos = 1876, section = 34 },
Terracotta = { pos = 3381, section = 15 },
Thallium = { pos = 1877, section = 34 },
['Thick Lingering Potion'] = { pos = 1097, section = 31 },
['Thick Potion'] = { pos = 1083, section = 21 },
['Thick Potion Revision 1'] = { pos = 309, section = 45 },
['Thick Splash Potion'] = { pos = 1100, section = 22 },
Thorium = { pos = 1878, section = 34 },
Thulium = { pos = 1879, section = 34 },
['Tide Armor Trim'] = { pos = 823, section = 41 },
['Tide Armor Trim Smithing Template'] = { pos = 823, section = 41 },
['tile.info_update.name'] = { pos = 357, section = 30 },
Tin = { pos = 1869, section = 34 },
['Tinted Glass'] = { pos = 431, section = 12 },
['Tipped Arrow'] = { pos = 1266, section = 28 },
Titanium = { pos = 1880, section = 34 },
TNT = { pos = 3615, section = 26 },
Tonic = { pos = 1768, section = 33 },
['Top Snow'] = { pos = 999, section = 15 },
Torch = { pos = 3390, section = 17 },
['Torch Revision 1'] = { pos = 2092, section = 29 },
Torchflower = { pos = 1199, section = 19 },
['Torchflower Seeds'] = { pos = 1200, section = 19 },
['Totem of Undying'] = { pos = 3641, section = 28 },
['Trader Llama Spawn Egg'] = { pos = 2462, section = 24 },
['Transition metal'] = { pos = 75, section = 34 },
['Trapped Chest'] = { pos = 3616, section = 26 },
['Trapped Chest BE'] = { pos = 59, section = 26 },
['Treasure Map'] = { pos = 123, section = 25 },
Trident = { pos = 1716, section = 28 },
['Trident Revision 1'] = { pos = 1680, section = 29 },
['Tripwire Hook'] = { pos = 3354, section = 13 },
['Tropical Fish'] = { pos = 1689, section = 10 },
['Tropical Fish Bucket Revision 1'] = { pos = 1685, section = 29 },
['Tropical Fish Spawn Egg'] = { pos = 1722, section = 24 },
['Tropical Fish Spawn Egg Revision 1'] = { pos = 1971, section = 39 },
['Tube Coral'] = { pos = 1711, section = 15 },
['Tube Coral Block'] = { pos = 1706, section = 15 },
['Tube Coral Block Revision 1'] = { pos = 1700, section = 29 },
['Tube Coral Fan'] = { pos = 2135, section = 15 },
['Tube Coral Fan Revision 1'] = { pos = 1695, section = 29 },
['Tube Coral Fan Revision 2'] = { pos = 2143, section = 29 },
Tuff = { pos = 433, section = 15 },
Tungsten = { pos = 1881, section = 34 },
['Tungsten Chloride'] = { pos = 1917, section = 37 },
['Turtle Egg'] = { pos = 1972, section = 5 },
['Turtle Egg Revision 1'] = { pos = 1668, section = 29 },
['Turtle Helmet'] = { pos = 1681, section = 1 },
['Turtle Shell'] = { pos = 1681, section = 1 },
['Turtle Spawn Egg'] = { pos = 1729, section = 24 },
['Twisting Vines'] = { pos = 203, section = 16 },
['Ultramarine Cloth'] = { pos = 228, section = 40 },
['Uncraftable Lingering Potion'] = { pos = 3500, section = 31 },
['Uncraftable Potion'] = { pos = 1403, section = 21 },
['Uncraftable Potion Revision 1'] = { pos = 310, section = 45 },
['Uncraftable Splash Potion'] = { pos = 3483, section = 22 },
['Uncraftable Tipped Arrow'] = { pos = 1409, section = 28 },
['Underwater TNT'] = { pos = 1946, section = 33 },
['Underwater Torch'] = { pos = 1769, section = 33 },
Uranium = { pos = 1882, section = 34 },
['USB Charger'] = { pos = 1640, section = 32 },
['USB Charger Block'] = { pos = 1640, section = 32 },
Vanadium = { pos = 1883, section = 34 },
['Verdant Froglight'] = { pos = 584, section = 12 },
['Verdant Froglight BE'] = { pos = 580, section = 12 },
['Very Damaged Anvil'] = { pos = 1257, section = 26 },
['Vex Armor Trim'] = { pos = 824, section = 41 },
['Vex Armor Trim Smithing Template'] = { pos = 824, section = 41 },
['Vex Spawn Egg'] = { pos = 1413, section = 24 },
['Village Map'] = { pos = 1326, section = 25 },
['Village Map BE'] = { pos = 1327, section = 25 },
['Villager Spawn Egg'] = { pos = 1165, section = 24 },
['Villager Spawn Egg Revision 1'] = { pos = 1398, section = 39 },
['Vindicator Spawn Egg'] = { pos = 1414, section = 24 },
Vines = { pos = 3448, section = 19 },
['Violet Cloth'] = { pos = 238, section = 40 },
['Void Air'] = { pos = 2363, section = 15 },
['Wandering Trader Spawn Egg'] = { pos = 2463, section = 24 },
['Ward Armor Trim'] = { pos = 826, section = 41 },
['Ward Armor Trim Smithing Template'] = { pos = 826, section = 41 },
['Warden Spawn Egg'] = { pos = 581, section = 24 },
['Warped Button'] = { pos = 171, section = 13 },
['Warped Door'] = { pos = 172, section = 13 },
['Warped Fence'] = { pos = 649, section = 12 },
['Warped Fence BE'] = { pos = 164, section = 12 },
['Warped Fence Gate'] = { pos = 180, section = 13 },
['Warped Fence Gate BE'] = { pos = 383, section = 13 },
['Warped Fungus'] = { pos = 159, section = 16 },
['Warped Fungus on a Stick'] = { pos = 224, section = 25 },
['Warped Hanging Sign'] = { pos = 661, section = 5 },
['Warped Hyphae'] = { pos = 199, section = 16 },
['Warped Nylium'] = { pos = 153, section = 16 },
['Warped Planks'] = { pos = 147, section = 12 },
['Warped Pressure Plate'] = { pos = 173, section = 13 },
['Warped Roots'] = { pos = 192, section = 16 },
['Warped Sign'] = { pos = 178, section = 17 },
['Warped Slab'] = { pos = 165, section = 12 },
['Warped Stairs'] = { pos = 166, section = 12 },
['Warped Stem'] = { pos = 154, section = 16 },
['Warped Trapdoor'] = { pos = 174, section = 13 },
['Warped Wart Block'] = { pos = 155, section = 16 },
Water = { pos = 2127, section = 11 },
['Water (compound)'] = { pos = 1892, section = 35 },
['Water BE'] = { pos = 2128, section = 11 },
['Water Block'] = { pos = 2118, section = 29 },
['Water Bottle'] = { pos = 1083, section = 21 },
['Water Bottle Revision 1'] = { pos = 311, section = 45 },
['Water Bucket'] = { pos = 3149, section = 4 },
['Water Revision 2'] = { pos = 851, section = 29 },
['Wax Block'] = { pos = 96, section = 30 },
['Waxed Block of Copper'] = { pos = 401, section = 12 },
['Waxed Copper'] = { pos = 401, section = 12 },
['Waxed Copper Block'] = { pos = 401, section = 12 },
['Waxed Cut Copper'] = { pos = 402, section = 12 },
['Waxed Cut Copper Block'] = { pos = 402, section = 12 },
['Waxed Cut Copper Slab'] = { pos = 403, section = 12 },
['Waxed Cut Copper Stairs'] = { pos = 404, section = 12 },
['Waxed Exposed Copper'] = { pos = 411, section = 12 },
['Waxed Exposed Copper Block'] = { pos = 411, section = 12 },
['Waxed Exposed Cut Copper'] = { pos = 412, section = 12 },
['Waxed Exposed Cut Copper Block'] = { pos = 412, section = 12 },
['Waxed Exposed Cut Copper Slab'] = { pos = 413, section = 12 },
['Waxed Exposed Cut Copper Stairs'] = { pos = 414, section = 12 },
['Waxed Oxidized Copper'] = { pos = 441, section = 12 },
['Waxed Oxidized Copper Block'] = { pos = 441, section = 12 },
['Waxed Oxidized Cut Copper'] = { pos = 442, section = 12 },
['Waxed Oxidized Cut Copper Block'] = { pos = 442, section = 12 },
['Waxed Oxidized Cut Copper Slab'] = { pos = 443, section = 12 },
['Waxed Oxidized Cut Copper Stairs'] = { pos = 444, section = 12 },
['Waxed Weathered Copper'] = { pos = 424, section = 12 },
['Waxed Weathered Copper Block'] = { pos = 424, section = 12 },
['Waxed Weathered Cut Copper'] = { pos = 425, section = 12 },
['Waxed Weathered Cut Copper Block'] = { pos = 425, section = 12 },
['Waxed Weathered Cut Copper Slab'] = { pos = 423, section = 12 },
['Waxed Weathered Cut Copper Stairs'] = { pos = 426, section = 12 },
['Wayfinder Armor Trim'] = { pos = 1218, section = 41 },
['Wayfinder Armor Trim Smithing Template'] = { pos = 1218, section = 41 },
['Weathered Copper'] = { pos = 424, section = 12 },
['Weathered Copper Block'] = { pos = 424, section = 12 },
['Weathered Cut Copper'] = { pos = 425, section = 12 },
['Weathered Cut Copper Block'] = { pos = 425, section = 12 },
['Weathered Cut Copper Slab'] = { pos = 423, section = 12 },
['Weathered Cut Copper Stairs'] = { pos = 426, section = 12 },
['Weeping Vines'] = { pos = 160, section = 16 },
['Wet Sponge'] = { pos = 3617, section = 26 },
Wheat = { pos = 3220, section = 10 },
['Wheat Seeds'] = { pos = 1067, section = 19 },
['White Balloon'] = { pos = 1947, section = 33 },
['White Banner'] = { pos = 788, section = 7 },
['White Banner 15w14a'] = { pos = 487, section = 32 },
['White Base Banner'] = { pos = 3062, section = 2 },
['White Base Dexter Canton Banner'] = { pos = 3063, section = 2 },
['White Base Gradient Banner'] = { pos = 3064, section = 2 },
['White Base Indented Banner'] = { pos = 3065, section = 2 },
['White Base Sinister Canton Banner'] = { pos = 3066, section = 2 },
['White Beaker'] = { pos = 1897, section = 35 },
['White Bed'] = { pos = 3185, section = 7 },
['White Bed BE'] = { pos = 1559, section = 7 },
['White Bed LCE'] = { pos = 1559, section = 7 },
['White Bend Banner'] = { pos = 3067, section = 2 },
['White Bend Sinister Banner'] = { pos = 3068, section = 2 },
['White Bordure Banner'] = { pos = 3069, section = 2 },
['White Bordure Indented Banner'] = { pos = 3070, section = 2 },
['White Candle'] = { pos = 437, section = 7 },
['White Carpet'] = { pos = 1635, section = 7 },
['White Carpet Revision 1'] = { pos = 789, section = 40 },
['White Chevron Banner'] = { pos = 3071, section = 2 },
['White Chief Banner'] = { pos = 3072, section = 2 },
['White Chief Dexter Canton Banner'] = { pos = 3073, section = 2 },
['White Chief Indented Banner'] = { pos = 3074, section = 2 },
['White Chief Sinister Canton Banner'] = { pos = 3075, section = 2 },
['White Cloth'] = { pos = 242, section = 40 },
['White Concrete'] = { pos = 1517, section = 7 },
['White Concrete Powder'] = { pos = 1518, section = 7 },
['White Creeper Charge Banner'] = { pos = 3076, section = 2 },
['White Cross Banner'] = { pos = 3077, section = 2 },
['White Dye'] = { pos = 2378, section = 6 },
['White Fess Banner'] = { pos = 3078, section = 2 },
['White Field Masoned Banner'] = { pos = 3079, section = 2 },
['White Firework Star'] = { pos = 820, section = 9 },
['White Flask'] = { pos = 1907, section = 36 },
['White Flower Charge Banner'] = { pos = 3080, section = 2 },
['White Glazed Terracotta'] = { pos = 1543, section = 7 },
['White Glazed Terracotta Revision 1'] = { pos = 1519, section = 40 },
['White Globe Banner'] = { pos = 50, section = 2 },
['White Glow Stick'] = { pos = 2006, section = 33 },
['White Gradient Banner'] = { pos = 3081, section = 2 },
['White Inverted Chevron Banner'] = { pos = 3082, section = 2 },
['White Jar'] = { pos = 1915, section = 37 },
['White Lozenge Banner'] = { pos = 3083, section = 2 },
['White Pale Banner'] = { pos = 3084, section = 2 },
['White Pale Dexter Banner'] = { pos = 3085, section = 2 },
['White Pale Sinister Banner'] = { pos = 3086, section = 2 },
['White Paly Banner'] = { pos = 3087, section = 2 },
['White Per Bend Banner'] = { pos = 3088, section = 2 },
['White Per Bend Inverted Banner'] = { pos = 3089, section = 2 },
['White Per Bend Sinister Banner'] = { pos = 3090, section = 2 },
['White Per Bend Sinister Inverted Banner'] = { pos = 3091, section = 2 },
['White Per Fess Banner'] = { pos = 3092, section = 2 },
['White Per Fess Inverted Banner'] = { pos = 3093, section = 2 },
['White Per Pale Banner'] = { pos = 3094, section = 2 },
['White Per Pale Inverted Banner'] = { pos = 3095, section = 2 },
['White Piglin Banner'] = { pos = 373, section = 2 },
['White Roundel Banner'] = { pos = 3096, section = 2 },
['White Saltire Banner'] = { pos = 3097, section = 2 },
['White Shield'] = { pos = 2528, section = 1 },
['White Shulker Box'] = { pos = 1617, section = 7 },
['White Shulker Box Revision 1'] = { pos = 1430, section = 40 },
['White Skull Charge Banner'] = { pos = 3098, section = 2 },
['White Snout Banner'] = { pos = 373, section = 2 },
['White Stained Glass'] = { pos = 791, section = 7 },
['White Stained Glass Pane'] = { pos = 792, section = 7 },
['White Stained Glass Pane BE'] = { pos = 2022, section = 7 },
['White Terracotta'] = { pos = 790, section = 7 },
['White Thing Banner'] = { pos = 3099, section = 2 },
['White Tinted Glass'] = { pos = 1314, section = 40 },
['White Tinted Glass Pane'] = { pos = 17, section = 40 },
['White Tulip'] = { pos = 3449, section = 19 },
['White Wood Planks'] = { pos = 258, section = 30 },
['White Wool'] = { pos = 1537, section = 7 },
['White Wool Revision 2'] = { pos = 793, section = 40 },
['Wild Armor Trim'] = { pos = 828, section = 41 },
['Wild Armor Trim Smithing Template'] = { pos = 828, section = 41 },
['Witch Spawn Egg'] = { pos = 1166, section = 24 },
['Wither Rose'] = { pos = 2388, section = 19 },
['Wither Skeleton Skull'] = { pos = 968, section = 14 },
['Wither Skeleton Skull BE'] = { pos = 219, section = 14 },
['Wither Skeleton Spawn Egg'] = { pos = 1378, section = 24 },
['Wither Spawn Egg'] = { pos = 698, section = 24 },
Wob = { pos = 1323, section = 32 },
['Wolf Spawn Egg'] = { pos = 1167, section = 24 },
['Wolf Spawn Egg Revision 1'] = { pos = 1399, section = 39 },
Wolfram = { pos = 1881, section = 34 },
['Wood Heart'] = { pos = 122, section = 32 },
['Wooden Axe'] = { pos = 3588, section = 25 },
['Wooden Hoe'] = { pos = 3589, section = 25 },
['Wooden Pickaxe'] = { pos = 3590, section = 25 },
['Wooden Shovel'] = { pos = 3591, section = 25 },
['Wooden Slab'] = { pos = 904, section = 12 },
['Wooden Sword'] = { pos = 3642, section = 28 },
['Woodland Explorer Map'] = { pos = 3592, section = 25 },
['Woodland Explorer Map BE'] = { pos = 126, section = 25 },
['Written Book'] = { pos = 3593, section = 25 },
Xenon = { pos = 1884, section = 34 },
['Yellow Balloon'] = { pos = 1948, section = 33 },
['Yellow Banner'] = { pos = 794, section = 7 },
['Yellow Banner 15w14a'] = { pos = 488, section = 32 },
['Yellow Base Banner'] = { pos = 3100, section = 2 },
['Yellow Base Dexter Canton Banner'] = { pos = 3101, section = 2 },
['Yellow Base Gradient Banner'] = { pos = 3102, section = 2 },
['Yellow Base Indented Banner'] = { pos = 3103, section = 2 },
['Yellow Base Sinister Canton Banner'] = { pos = 3104, section = 2 },
['Yellow Beaker'] = { pos = 1890, section = 35 },
['Yellow Bed'] = { pos = 3186, section = 7 },
['Yellow Bed BE'] = { pos = 1560, section = 7 },
['Yellow Bed LCE'] = { pos = 1560, section = 7 },
['Yellow Bend Banner'] = { pos = 3105, section = 2 },
['Yellow Bend Sinister Banner'] = { pos = 3106, section = 2 },
['Yellow Bordure Banner'] = { pos = 3107, section = 2 },
['Yellow Bordure Indented Banner'] = { pos = 3108, section = 2 },
['Yellow Candle'] = { pos = 438, section = 7 },
['Yellow Carpet'] = { pos = 1636, section = 7 },
['Yellow Carpet Revision 1'] = { pos = 795, section = 40 },
['Yellow Chevron Banner'] = { pos = 3109, section = 2 },
['Yellow Chief Banner'] = { pos = 3110, section = 2 },
['Yellow Chief Dexter Canton Banner'] = { pos = 3111, section = 2 },
['Yellow Chief Indented Banner'] = { pos = 3112, section = 2 },
['Yellow Chief Sinister Canton Banner'] = { pos = 3113, section = 2 },
['Yellow Cloth'] = { pos = 243, section = 40 },
['Yellow Concrete'] = { pos = 1520, section = 7 },
['Yellow Concrete Powder'] = { pos = 1521, section = 7 },
['Yellow Creeper Charge Banner'] = { pos = 3114, section = 2 },
['Yellow Cross Banner'] = { pos = 3115, section = 2 },
['Yellow Dye'] = { pos = 3170, section = 6 },
['Yellow Fess Banner'] = { pos = 3116, section = 2 },
['Yellow Field Masoned Banner'] = { pos = 3117, section = 2 },
['Yellow Firework Star'] = { pos = 821, section = 9 },
['Yellow Flask'] = { pos = 1914, section = 36 },
['Yellow Flower Charge Banner'] = { pos = 3118, section = 2 },
['Yellow Glazed Terracotta'] = { pos = 1522, section = 7 },
['Yellow Globe Banner'] = { pos = 51, section = 2 },
['Yellow Glow Stick'] = { pos = 2007, section = 33 },
['Yellow Gradient Banner'] = { pos = 3119, section = 2 },
['Yellow Inverted Chevron Banner'] = { pos = 3120, section = 2 },
['Yellow Jar'] = { pos = 1924, section = 37 },
['Yellow Key'] = { pos = 453, section = 32 },
['Yellow Lozenge Banner'] = { pos = 3121, section = 2 },
['Yellow Pale Banner'] = { pos = 3122, section = 2 },
['Yellow Pale Dexter Banner'] = { pos = 3123, section = 2 },
['Yellow Pale Sinister Banner'] = { pos = 3124, section = 2 },
['Yellow Paly Banner'] = { pos = 3125, section = 2 },
['Yellow Per Bend Banner'] = { pos = 3126, section = 2 },
['Yellow Per Bend Inverted Banner'] = { pos = 3127, section = 2 },
['Yellow Per Bend Sinister Banner'] = { pos = 3128, section = 2 },
['Yellow Per Bend Sinister Inverted Banner'] = { pos = 3129, section = 2 },
['Yellow Per Fess Banner'] = { pos = 3130, section = 2 },
['Yellow Per Fess Inverted Banner'] = { pos = 3131, section = 2 },
['Yellow Per Pale Banner'] = { pos = 3132, section = 2 },
['Yellow Per Pale Inverted Banner'] = { pos = 3133, section = 2 },
['Yellow Piglin Banner'] = { pos = 374, section = 2 },
['Yellow Roundel Banner'] = { pos = 3134, section = 2 },
['Yellow Saltire Banner'] = { pos = 3135, section = 2 },
['Yellow Shield'] = { pos = 2529, section = 1 },
['Yellow Shulker Box'] = { pos = 1618, section = 7 },
['Yellow Shulker Box Revision 1'] = { pos = 1431, section = 40 },
['Yellow Skull Charge Banner'] = { pos = 3136, section = 2 },
['Yellow Snout Banner'] = { pos = 374, section = 2 },
['Yellow Stained Glass'] = { pos = 797, section = 7 },
['Yellow Stained Glass Pane'] = { pos = 798, section = 7 },
['Yellow Stained Glass Pane BE'] = { pos = 2023, section = 7 },
['Yellow Terracotta'] = { pos = 796, section = 7 },
['Yellow Thing Banner'] = { pos = 3137, section = 2 },
['Yellow Tinted Glass'] = { pos = 1315, section = 40 },
['Yellow Tinted Glass Pane'] = { pos = 18, section = 40 },
['Yellow Wood Planks'] = { pos = 259, section = 30 },
['Yellow Wool'] = { pos = 1538, section = 7 },
['Yellow Wool Revision 2'] = { pos = 799, section = 40 },
Ytterbium = { pos = 1885, section = 34 },
Yttrium = { pos = 1886, section = 34 },
Zinc = { pos = 1887, section = 34 },
Zirconium = { pos = 1888, section = 34 },
['Zoglin Spawn Egg'] = { pos = 268, section = 24 },
['Zombie Head'] = { pos = 969, section = 14 },
['Zombie Head BE'] = { pos = 220, section = 14 },
['Zombie Horse Spawn Egg'] = { pos = 1379, section = 24 },
['Zombie Horse Spawn Egg Revision 1'] = { pos = 1591, section = 39 },
['Zombie Pigman Spawn Egg'] = { pos = 1169, section = 24 },
['Zombie Pigman Spawn Egg Revision 1'] = { pos = 1401, section = 39 },
['Zombie Spawn Egg'] = { pos = 1168, section = 24 },
['Zombie Spawn Egg Revision 1'] = { pos = 1400, section = 39 },
['Zombie Villager Spawn Egg'] = { pos = 1349, section = 24 },
['Zombified Piglin Spawn Egg'] = { pos = 1169, section = 24 },
},
}
4fd26904905841e4ed525aa345660eb329072176
172
171
2024-05-07T22:33:29Z
Axxyyy
2
Scribunto
text/plain
return {
settings = {
align = 'middle',
classname = 'inv-sprite',
image = 'InvSprite.png',
sheetsize = 1024,
size = 32,
stylesheet = true,
},
sections = {
{ name = 'Armor', id = 1 },
{ name = 'Banner', id = 2 },
{ name = 'Brewing ingredient', id = 3 },
{ name = 'Bucket', id = 4 },
{ name = 'Decoration', id = 5 },
{ name = 'Dye', id = 6 },
{ name = 'Dyed', id = 7 },
{ name = 'End', id = 8 },
{ name = 'Firework', id = 9 },
{ name = 'Food', id = 10 },
{ name = 'Liquid', id = 11 },
{ name = 'Manufactured', id = 12 },
{ name = 'Mechanism', id = 13 },
{ name = 'Mob head', id = 14 },
{ name = 'Natural', id = 15 },
{ name = 'Nether', id = 16 },
{ name = 'Non-solid', id = 17 },
{ name = 'Ore', id = 18 },
{ name = 'Plant', id = 19 },
{ name = 'Smithing Template', id = 41 },
{ name = 'Pottery Sherd', id = 44 },
{ name = 'Bedrock Edition & Education Edition', id = 20 },
{ name = 'Chemistry Miscellaneous', id = 33 },
{ name = 'Element', id = 34 },
{ name = 'Beaker', id = 35 },
{ name = 'Flask', id = 36 },
{ name = 'Jar', id = 37 },
{ name = 'Potion', id = 21 },
{ name = 'Splash potion', id = 22 },
{ name = 'Lingering potion', id = 31 },
{ name = 'Raw material', id = 23 },
{ name = 'Spawn egg', id = 24 },
{ name = 'Tool', id = 25 },
{ name = 'Trimmed Armor', id = 43 },
{ name = 'Utility', id = 26 },
{ name = 'Vehicle', id = 27 },
{ name = 'Weapon', id = 28 },
{ name = 'Legacy: Potion', id = 45 },
{ name = 'Legacy: Lingering Potion', id = 46 },
{ name = 'Legacy: Splash Potion', id = 47 },
{ name = 'Legacy: Spawn Eggs', id = 39 },
{ name = 'Legacy: Dyed', id = 40 },
{ name = 'Legacy: before 15w31a stair flip', id = 42 },
{ name = 'Legacy: Miscellaneous', id = 29 },
{ name = 'April Fools', id = 32 },
{ name = 'Other', id = 30 },
{ name = 'Minecraft Earth', id = 38 },
},
ids = {
['3D'] = { pos = 446, section = 32 },
['???'] = { pos = 1770, section = 34 },
['A Very Fine Item'] = { pos = 263, section = 32 },
['Acacia Boat'] = { pos = 637, section = 27 },
['Acacia Boat Revision 2'] = { pos = 3618, section = 29 },
['Acacia Boat with Chest'] = { pos = 610, section = 27 },
['Acacia Button'] = { pos = 3326, section = 13 },
['Acacia Door'] = { pos = 566, section = 13 },
['Acacia Door Revision 3'] = { pos = 935, section = 13 },
['Acacia Fence'] = { pos = 645, section = 12 },
['Acacia Fence BE'] = { pos = 3222, section = 12 },
['Acacia Fence Gate'] = { pos = 3221, section = 13 },
['Acacia Fence Gate BE'] = { pos = 52, section = 13 },
['Acacia Hanging Sign'] = { pos = 261, section = 5 },
['Acacia Leaves'] = { pos = 3398, section = 19 },
['Acacia Log'] = { pos = 3399, section = 19 },
['Acacia Planks'] = { pos = 854, section = 12 },
['Acacia Pressure Plate'] = { pos = 3327, section = 13 },
['Acacia Sapling'] = { pos = 3400, section = 19 },
['Acacia Sign'] = { pos = 2396, section = 17 },
['Acacia Slab'] = { pos = 3223, section = 12 },
['Acacia Stairs'] = { pos = 3224, section = 12 },
['Acacia Trapdoor'] = { pos = 1650, section = 13 },
['Acacia Wood'] = { pos = 3225, section = 12 },
['Acacia Wood Button'] = { pos = 3326, section = 13 },
['Acacia Wood Door'] = { pos = 566, section = 13 },
['Acacia Wood Fence'] = { pos = 645, section = 12 },
['Acacia Wood Fence Gate'] = { pos = 3221, section = 13 },
['Acacia Wood Planks'] = { pos = 854, section = 12 },
['Acacia Wood Pressure Plate'] = { pos = 3327, section = 13 },
['Acacia Wood Sign'] = { pos = 2396, section = 17 },
['Acacia Wood Slab'] = { pos = 3223, section = 12 },
['Acacia Wood Stairs'] = { pos = 3224, section = 12 },
['Acacia Wood Trapdoor'] = { pos = 1650, section = 13 },
Actinide = { pos = 66, section = 34 },
Actinium = { pos = 1771, section = 34 },
['Activator Rail'] = { pos = 3328, section = 13 },
['Adult Carrots'] = { pos = 2138, section = 19 },
['Adult Nether Warts'] = { pos = 2170, section = 16 },
['Adult Potatoes'] = { pos = 2142, section = 19 },
['Adult Wheat Crops'] = { pos = 2144, section = 19 },
Air = { pos = 2363, section = 15 },
['Alkali metal'] = { pos = 67, section = 34 },
['Alkaline earth metal'] = { pos = 68, section = 34 },
['Allay Spawn Egg'] = { pos = 901, section = 24 },
Allium = { pos = 3401, section = 19 },
Allow = { pos = 1435, section = 20 },
Aluminium = { pos = 1772, section = 34 },
Aluminum = { pos = 1772, section = 34 },
['Aluminum Oxide'] = { pos = 1918, section = 37 },
Americium = { pos = 1773, section = 34 },
['Amethyst Cluster'] = { pos = 393, section = 15 },
['Amethyst Shard'] = { pos = 394, section = 23 },
['Amethyst Trim Chainmail Boots'] = { pos = 829, section = 43 },
['Amethyst Trim Chainmail Chestplate'] = { pos = 830, section = 43 },
['Amethyst Trim Chainmail Helmet'] = { pos = 832, section = 43 },
['Amethyst Trim Chainmail Leggings'] = { pos = 833, section = 43 },
['Amethyst Trim Diamond Boots'] = { pos = 834, section = 43 },
['Amethyst Trim Diamond Chestplate'] = { pos = 835, section = 43 },
['Amethyst Trim Diamond Helmet'] = { pos = 836, section = 43 },
['Amethyst Trim Diamond Leggings'] = { pos = 838, section = 43 },
['Amethyst Trim Golden Boots'] = { pos = 839, section = 43 },
['Amethyst Trim Golden Chestplate'] = { pos = 840, section = 43 },
['Amethyst Trim Golden Helmet'] = { pos = 841, section = 43 },
['Amethyst Trim Golden Leggings'] = { pos = 843, section = 43 },
['Amethyst Trim Iron Boots'] = { pos = 844, section = 43 },
['Amethyst Trim Iron Chestplate'] = { pos = 845, section = 43 },
['Amethyst Trim Iron Helmet'] = { pos = 847, section = 43 },
['Amethyst Trim Iron Leggings'] = { pos = 849, section = 43 },
['Amethyst Trim Leather Boots'] = { pos = 850, section = 43 },
['Amethyst Trim Leather Cap'] = { pos = 852, section = 43 },
['Amethyst Trim Leather Pants'] = { pos = 853, section = 43 },
['Amethyst Trim Leather Tunic'] = { pos = 855, section = 43 },
['Amethyst Trim Netherite Boots'] = { pos = 856, section = 43 },
['Amethyst Trim Netherite Chestplate'] = { pos = 857, section = 43 },
['Amethyst Trim Netherite Helmet'] = { pos = 858, section = 43 },
['Amethyst Trim Netherite Leggings'] = { pos = 860, section = 43 },
['Amethyst Trim Turtle Shell'] = { pos = 861, section = 43 },
Ammonia = { pos = 1889, section = 35 },
['Ancient Debris'] = { pos = 134, section = 16 },
Andesite = { pos = 3355, section = 15 },
['Andesite Slab'] = { pos = 3226, section = 12 },
['Andesite Stairs'] = { pos = 3227, section = 12 },
['Andesite Wall'] = { pos = 3228, section = 12 },
['Andesite Wall BE'] = { pos = 21, section = 12 },
['Angler Pottery Sherd'] = { pos = 1220, section = 44 },
['Ankle Monitor'] = { pos = 1637, section = 32 },
Ant = { pos = 264, section = 32 },
Antidote = { pos = 1744, section = 33 },
Antimony = { pos = 1774, section = 34 },
Anvil = { pos = 3594, section = 26 },
Apple = { pos = 3193, section = 10 },
['Apple Revision 1'] = { pos = 2034, section = 29 },
['Archer Pottery Sherd'] = { pos = 1201, section = 44 },
Argentum = { pos = 1775, section = 34 },
Argon = { pos = 1776, section = 34 },
['Armor Stand'] = { pos = 3150, section = 5 },
['Arms Up Pottery Sherd'] = { pos = 1202, section = 44 },
Arrow = { pos = 1267, section = 28 },
['Arrow 15w14a'] = { pos = 117, section = 32 },
['Arrow Loaded Crossbow'] = { pos = 2383, section = 28 },
['Arrow of Big'] = { pos = 1237, section = 32 },
['Arrow of Decay'] = { pos = 1408, section = 28 },
['Arrow of Decay Revision 1'] = { pos = 1562, section = 29 },
['Arrow of Fire Resistance'] = { pos = 1268, section = 28 },
['Arrow of Harming'] = { pos = 1269, section = 28 },
['Arrow of Healing'] = { pos = 1270, section = 28 },
['Arrow of Invisibility'] = { pos = 1271, section = 28 },
['Arrow of Leaping'] = { pos = 1272, section = 28 },
['Arrow of Luck'] = { pos = 1362, section = 28 },
['Arrow of Night Vision'] = { pos = 1273, section = 28 },
['Arrow of Poison'] = { pos = 1274, section = 28 },
['Arrow of Regeneration'] = { pos = 1275, section = 28 },
['Arrow of Slow Falling'] = { pos = 1734, section = 28 },
['Arrow of Slowness'] = { pos = 1276, section = 28 },
['Arrow of Small'] = { pos = 1238, section = 32 },
['Arrow of Splashing'] = { pos = 1266, section = 28 },
['Arrow of Strength'] = { pos = 1277, section = 28 },
['Arrow of Swiftness'] = { pos = 1278, section = 28 },
['Arrow of the Turtle Master'] = { pos = 2030, section = 28 },
['Arrow of Water Breathing'] = { pos = 133, section = 28 },
['Arrow of Weakness'] = { pos = 1279, section = 28 },
Arsenic = { pos = 1777, section = 34 },
Astatine = { pos = 1778, section = 34 },
Aurum = { pos = 1779, section = 34 },
['Awkward Lingering Potion'] = { pos = 1097, section = 31 },
['Awkward Potion'] = { pos = 1083, section = 21 },
['Awkward Potion Revision 1'] = { pos = 292, section = 45 },
['Awkward Splash Potion'] = { pos = 1100, section = 22 },
['Axolotl Spawn Egg'] = { pos = 440, section = 24 },
Azalea = { pos = 464, section = 19 },
['Azalea Leaves'] = { pos = 465, section = 19 },
['Azure Bluet'] = { pos = 3402, section = 19 },
['Baked Potato'] = { pos = 3194, section = 10 },
['Baked Potato Revision 1'] = { pos = 2069, section = 29 },
Bamboo = { pos = 2373, section = 19 },
['Bamboo Button'] = { pos = 670, section = 13 },
['Bamboo Door'] = { pos = 671, section = 13 },
['Bamboo Fence'] = { pos = 662, section = 12 },
['Bamboo Fence Gate'] = { pos = 672, section = 13 },
['Bamboo Hanging Sign'] = { pos = 650, section = 5 },
['Bamboo Mosaic'] = { pos = 664, section = 12 },
['Bamboo Mosaic Slab'] = { pos = 665, section = 12 },
['Bamboo Mosaic Stairs'] = { pos = 666, section = 12 },
['Bamboo Planks'] = { pos = 667, section = 12 },
['Bamboo Pressure Plate'] = { pos = 674, section = 13 },
['Bamboo Raft'] = { pos = 690, section = 27 },
['Bamboo Raft BE'] = { pos = 693, section = 27 },
['Bamboo Raft with Chest'] = { pos = 691, section = 27 },
['Bamboo Raft with Chest BE'] = { pos = 694, section = 27 },
['Bamboo Sign'] = { pos = 680, section = 17 },
['Bamboo Slab'] = { pos = 668, section = 12 },
['Bamboo Stairs'] = { pos = 669, section = 12 },
['Bamboo Trapdoor'] = { pos = 679, section = 13 },
['Bamboo Wood Button'] = { pos = 670, section = 13 },
['Bamboo Wood Door'] = { pos = 671, section = 13 },
['Bamboo Wood Fence'] = { pos = 662, section = 12 },
['Bamboo Wood Fence Gate'] = { pos = 672, section = 13 },
['Bamboo Wood Planks'] = { pos = 667, section = 12 },
['Bamboo Wood Pressure Plate'] = { pos = 674, section = 13 },
['Bamboo Wood Sign'] = { pos = 680, section = 17 },
['Bamboo Wood Slab'] = { pos = 668, section = 12 },
['Bamboo Wood Stairs'] = { pos = 669, section = 12 },
['Bamboo Wood Trapdoor'] = { pos = 679, section = 13 },
Banner = { pos = 788, section = 7 },
['Banner Pattern'] = { pos = 2391, section = 2 },
['Banner Revision 1'] = { pos = 2042, section = 29 },
Barium = { pos = 1780, section = 34 },
['Barium Sulfate'] = { pos = 1915, section = 37 },
Barrel = { pos = 2435, section = 26 },
Barrier = { pos = 3595, section = 26 },
Basalt = { pos = 148, section = 16 },
['Bat Spawn Egg'] = { pos = 1142, section = 24 },
Beacon = { pos = 3596, section = 26 },
['Beacon BE'] = { pos = 212, section = 26 },
Beaker = { pos = 1889, section = 35 },
Bedrock = { pos = 971, section = 15 },
['Bee Nest'] = { pos = 64, section = 15 },
['Bee Spawn Egg'] = { pos = 104, section = 24 },
['Bee Spawn Egg Revision 1'] = { pos = 65, section = 39 },
Beehive = { pos = 63, section = 12 },
Beetroot = { pos = 3196, section = 10 },
['Beetroot Seeds'] = { pos = 3403, section = 19 },
['Beetroot Soup'] = { pos = 3195, section = 10 },
Beetroots = { pos = 2145, section = 19 },
Bell = { pos = 2409, section = 5 },
Benzene = { pos = 1890, section = 35 },
Berkelium = { pos = 1781, section = 34 },
Beryllium = { pos = 1782, section = 34 },
['Big Dripleaf'] = { pos = 466, section = 19 },
['Birch Boat'] = { pos = 635, section = 27 },
['Birch Boat Revision 2'] = { pos = 3619, section = 29 },
['Birch Boat with Chest'] = { pos = 611, section = 27 },
['Birch Button'] = { pos = 3329, section = 13 },
['Birch Door'] = { pos = 567, section = 13 },
['Birch Door Revision 3'] = { pos = 937, section = 13 },
['Birch Fence'] = { pos = 643, section = 12 },
['Birch Fence BE'] = { pos = 3230, section = 12 },
['Birch Fence Gate'] = { pos = 3229, section = 13 },
['Birch Fence Gate BE'] = { pos = 53, section = 13 },
['Birch Hanging Sign'] = { pos = 651, section = 5 },
['Birch Leaves'] = { pos = 3404, section = 19 },
['Birch Log'] = { pos = 3405, section = 19 },
['Birch Log Revision 1'] = { pos = 2238, section = 29 },
['Birch Planks'] = { pos = 859, section = 12 },
['Birch Pressure Plate'] = { pos = 3330, section = 13 },
['Birch Sapling'] = { pos = 3406, section = 19 },
['Birch Sign'] = { pos = 2393, section = 17 },
['Birch Slab'] = { pos = 3231, section = 12 },
['Birch Stairs'] = { pos = 3232, section = 12 },
['Birch Stairs Left'] = { pos = 2256, section = 42 },
['Birch Trapdoor'] = { pos = 1648, section = 13 },
['Birch Wood'] = { pos = 3233, section = 12 },
['Birch Wood Button'] = { pos = 3329, section = 13 },
['Birch Wood Door'] = { pos = 567, section = 13 },
['Birch Wood Fence'] = { pos = 643, section = 12 },
['Birch Wood Fence Gate'] = { pos = 3229, section = 13 },
['Birch Wood Planks'] = { pos = 859, section = 12 },
['Birch Wood Pressure Plate'] = { pos = 3330, section = 13 },
['Birch Wood Sign'] = { pos = 2393, section = 17 },
['Birch Wood Slab'] = { pos = 3231, section = 12 },
['Birch Wood Stairs'] = { pos = 3232, section = 12 },
['Birch Wood Trapdoor'] = { pos = 1648, section = 13 },
Bismuth = { pos = 1783, section = 34 },
Bit = { pos = 1241, section = 32 },
['Black Balloon'] = { pos = 1928, section = 33 },
['Black Banner'] = { pos = 704, section = 7 },
['Black Banner 15w14a'] = { pos = 472, section = 32 },
['Black Base Banner'] = { pos = 2530, section = 2 },
['Black Base Dexter Canton Banner'] = { pos = 2531, section = 2 },
['Black Base Gradient Banner'] = { pos = 2532, section = 2 },
['Black Base Indented Banner'] = { pos = 2533, section = 2 },
['Black Base Sinister Canton Banner'] = { pos = 2534, section = 2 },
['Black Beaker'] = { pos = 1891, section = 35 },
['Black Bed'] = { pos = 3171, section = 7 },
['Black Bed BE'] = { pos = 1235, section = 7 },
['Black Bed LCE'] = { pos = 1235, section = 7 },
['Black Bend Banner'] = { pos = 2535, section = 2 },
['Black Bend Sinister Banner'] = { pos = 2536, section = 2 },
['Black Bordure Banner'] = { pos = 2537, section = 2 },
['Black Bordure Indented Banner'] = { pos = 2538, section = 2 },
['Black Candle'] = { pos = 395, section = 7 },
['Black Carpet'] = { pos = 1621, section = 7 },
['Black Carpet Revision 1'] = { pos = 705, section = 40 },
['Black Chevron Banner'] = { pos = 2539, section = 2 },
['Black Chief Banner'] = { pos = 2540, section = 2 },
['Black Chief Dexter Canton Banner'] = { pos = 2541, section = 2 },
['Black Chief Indented Banner'] = { pos = 2542, section = 2 },
['Black Chief Sinister Canton Banner'] = { pos = 2543, section = 2 },
['Black Concrete'] = { pos = 1475, section = 7 },
['Black Concrete Powder'] = { pos = 1476, section = 7 },
['Black Creeper Charge Banner'] = { pos = 2544, section = 2 },
['Black Cross Banner'] = { pos = 2545, section = 2 },
['Black Dye'] = { pos = 2375, section = 6 },
['Black Fess Banner'] = { pos = 2546, section = 2 },
['Black Field Masoned Banner'] = { pos = 2547, section = 2 },
['Black Firework Star'] = { pos = 804, section = 9 },
['Black Flask'] = { pos = 1902, section = 36 },
['Black Flower Charge Banner'] = { pos = 2548, section = 2 },
['Black Glazed Terracotta'] = { pos = 1477, section = 7 },
['Black Globe Banner'] = { pos = 35, section = 2 },
['Black Gradient Banner'] = { pos = 2549, section = 2 },
['Black Inverted Chevron Banner'] = { pos = 2550, section = 2 },
['Black Jar'] = { pos = 1916, section = 37 },
['Black Lozenge Banner'] = { pos = 2551, section = 2 },
['Black Pale Banner'] = { pos = 2552, section = 2 },
['Black Pale Dexter Banner'] = { pos = 2553, section = 2 },
['Black Pale Sinister Banner'] = { pos = 2554, section = 2 },
['Black Paly Banner'] = { pos = 2555, section = 2 },
['Black Per Bend Banner'] = { pos = 2556, section = 2 },
['Black Per Bend Inverted Banner'] = { pos = 2557, section = 2 },
['Black Per Bend Sinister Banner'] = { pos = 2558, section = 2 },
['Black Per Bend Sinister Inverted Banner'] = { pos = 2559, section = 2 },
['Black Per Fess Banner'] = { pos = 2560, section = 2 },
['Black Per Fess Inverted Banner'] = { pos = 2561, section = 2 },
['Black Per Pale Banner'] = { pos = 2562, section = 2 },
['Black Per Pale Inverted Banner'] = { pos = 2563, section = 2 },
['Black Piglin Banner'] = { pos = 359, section = 2 },
['Black Roundel Banner'] = { pos = 2564, section = 2 },
['Black Saltire Banner'] = { pos = 2565, section = 2 },
['Black Shield'] = { pos = 2469, section = 1 },
['Black Shulker Box'] = { pos = 1603, section = 7 },
['Black Shulker Box Revision 1'] = { pos = 1416, section = 40 },
['Black Skull Charge Banner'] = { pos = 2566, section = 2 },
['Black Snout Banner'] = { pos = 359, section = 2 },
['Black Stained Glass'] = { pos = 707, section = 7 },
['Black Stained Glass Pane'] = { pos = 708, section = 7 },
['Black Stained Glass Pane BE'] = { pos = 2008, section = 7 },
['Black Terracotta'] = { pos = 706, section = 7 },
['Black Thing Banner'] = { pos = 2567, section = 2 },
['Black Tinted Glass'] = { pos = 1294, section = 40 },
['Black Tinted Glass Pane'] = { pos = 3, section = 40 },
['Black Wood Planks'] = { pos = 244, section = 30 },
['Black Wool'] = { pos = 1523, section = 7 },
['Black Wool Revision 2'] = { pos = 709, section = 40 },
Blackstone = { pos = 260, section = 16 },
['Blackstone Slab'] = { pos = 276, section = 12 },
['Blackstone Stairs'] = { pos = 277, section = 12 },
['Blackstone Wall'] = { pos = 278, section = 12 },
['Blackstone Wall BE'] = { pos = 386, section = 12 },
['Blade Pottery Sherd'] = { pos = 1221, section = 44 },
['Blank Spawn Egg'] = { pos = 2361, section = 39 },
['Blast Furnace'] = { pos = 2442, section = 26 },
['Blaze Powder'] = { pos = 654, section = 3 },
['Blaze Rod'] = { pos = 655, section = 3 },
['Blaze Spawn Egg'] = { pos = 1143, section = 24 },
['Blaze Spawn Egg Revision 1'] = { pos = 1350, section = 39 },
Bleach = { pos = 1745, section = 33 },
['Bleach (filled)'] = { pos = 1746, section = 33 },
['Block of Amethyst'] = { pos = 396, section = 15 },
['Block of Bamboo'] = { pos = 699, section = 12 },
['Block of Coal'] = { pos = 3234, section = 12 },
['Block of Coal Revision 1'] = { pos = 1295, section = 29 },
['Block of Copper'] = { pos = 401, section = 12 },
['Block of Diamond'] = { pos = 3235, section = 12 },
['Block of Emerald'] = { pos = 3236, section = 12 },
['Block of Gold'] = { pos = 3237, section = 12 },
['Block of Iron'] = { pos = 3238, section = 12 },
['Block of Lapis Lazuli'] = { pos = 3273, section = 12 },
['Block of Netherite'] = { pos = 132, section = 12 },
['Block of Quartz'] = { pos = 3239, section = 12 },
['Block of Raw Copper'] = { pos = 545, section = 12 },
['Block of Raw Gold'] = { pos = 546, section = 12 },
['Block of Raw Iron'] = { pos = 547, section = 12 },
['Block of Redstone'] = { pos = 3331, section = 13 },
['Block of Stripped Bamboo'] = { pos = 700, section = 12 },
['Blue Balloon'] = { pos = 1929, section = 33 },
['Blue Banner'] = { pos = 710, section = 7 },
['Blue Banner 15w14a'] = { pos = 473, section = 32 },
['Blue Base Banner'] = { pos = 2568, section = 2 },
['Blue Base Dexter Canton Banner'] = { pos = 2569, section = 2 },
['Blue Base Gradient Banner'] = { pos = 2570, section = 2 },
['Blue Base Indented Banner'] = { pos = 2571, section = 2 },
['Blue Base Sinister Canton Banner'] = { pos = 2572, section = 2 },
['Blue Beaker'] = { pos = 1892, section = 35 },
['Blue Bed'] = { pos = 3172, section = 7 },
['Blue Bed BE'] = { pos = 1546, section = 7 },
['Blue Bed LCE'] = { pos = 1546, section = 7 },
['Blue Bend Banner'] = { pos = 2573, section = 2 },
['Blue Bend Sinister Banner'] = { pos = 2574, section = 2 },
['Blue Bordure Banner'] = { pos = 2575, section = 2 },
['Blue Bordure Indented Banner'] = { pos = 2576, section = 2 },
['Blue Candle'] = { pos = 397, section = 7 },
['Blue Carpet'] = { pos = 1622, section = 7 },
['Blue Carpet Revision 1'] = { pos = 711, section = 40 },
['Blue Chevron Banner'] = { pos = 2577, section = 2 },
['Blue Chief Banner'] = { pos = 2578, section = 2 },
['Blue Chief Dexter Canton Banner'] = { pos = 2579, section = 2 },
['Blue Chief Indented Banner'] = { pos = 2580, section = 2 },
['Blue Chief Sinister Canton Banner'] = { pos = 2581, section = 2 },
['Blue Concrete'] = { pos = 1478, section = 7 },
['Blue Concrete Powder'] = { pos = 1479, section = 7 },
['Blue Creeper Charge Banner'] = { pos = 2582, section = 2 },
['Blue Cross Banner'] = { pos = 2583, section = 2 },
['Blue Dye'] = { pos = 2376, section = 6 },
['Blue Fess Banner'] = { pos = 2584, section = 2 },
['Blue Field Masoned Banner'] = { pos = 2585, section = 2 },
['Blue Firework Star'] = { pos = 805, section = 9 },
['Blue Flask'] = { pos = 1903, section = 36 },
['Blue Flower Charge Banner'] = { pos = 2586, section = 2 },
['Blue Glazed Terracotta'] = { pos = 1480, section = 7 },
['Blue Globe Banner'] = { pos = 36, section = 2 },
['Blue Glow Stick'] = { pos = 1977, section = 33 },
['Blue Gradient Banner'] = { pos = 2587, section = 2 },
['Blue Ice'] = { pos = 1735, section = 15 },
['Blue Ice BE'] = { pos = 113, section = 15 },
['Blue Inverted Chevron Banner'] = { pos = 2588, section = 2 },
['Blue Jar'] = { pos = 1917, section = 37 },
['Blue Key'] = { pos = 451, section = 32 },
['Blue Lozenge Banner'] = { pos = 2589, section = 2 },
['Blue Orchid'] = { pos = 3407, section = 19 },
['Blue Pale Banner'] = { pos = 2590, section = 2 },
['Blue Pale Dexter Banner'] = { pos = 2591, section = 2 },
['Blue Pale Sinister Banner'] = { pos = 2592, section = 2 },
['Blue Paly Banner'] = { pos = 2593, section = 2 },
['Blue Per Bend Banner'] = { pos = 2594, section = 2 },
['Blue Per Bend Inverted Banner'] = { pos = 2595, section = 2 },
['Blue Per Bend Sinister Banner'] = { pos = 2596, section = 2 },
['Blue Per Bend Sinister Inverted Banner'] = { pos = 2597, section = 2 },
['Blue Per Fess Banner'] = { pos = 2598, section = 2 },
['Blue Per Fess Inverted Banner'] = { pos = 2599, section = 2 },
['Blue Per Pale Banner'] = { pos = 2600, section = 2 },
['Blue Per Pale Inverted Banner'] = { pos = 2601, section = 2 },
['Blue Piglin Banner'] = { pos = 360, section = 2 },
['Blue Roundel Banner'] = { pos = 2602, section = 2 },
['Blue Saltire Banner'] = { pos = 2603, section = 2 },
['Blue Shield'] = { pos = 2470, section = 1 },
['Blue Shulker Box'] = { pos = 1604, section = 7 },
['Blue Shulker Box Revision 1'] = { pos = 1417, section = 40 },
['Blue Skull Charge Banner'] = { pos = 2604, section = 2 },
['Blue Snout Banner'] = { pos = 360, section = 2 },
['Blue Sparkler'] = { pos = 1747, section = 33 },
['Blue Sparkler (active)'] = { pos = 1748, section = 33 },
['Blue Stained Glass'] = { pos = 713, section = 7 },
['Blue Stained Glass Pane'] = { pos = 714, section = 7 },
['Blue Stained Glass Pane BE'] = { pos = 2009, section = 7 },
['Blue Terracotta'] = { pos = 712, section = 7 },
['Blue Thing Banner'] = { pos = 2605, section = 2 },
['Blue Tinted Glass'] = { pos = 1296, section = 40 },
['Blue Tinted Glass Pane'] = { pos = 4, section = 40 },
['Blue Torch'] = { pos = 1749, section = 33 },
['Blue Wood Planks'] = { pos = 245, section = 30 },
['Blue Wool'] = { pos = 1524, section = 7 },
['Blue Wool Revision 2'] = { pos = 715, section = 40 },
Board = { pos = 1592, section = 20 },
Boat = { pos = 1259, section = 29 },
['Boat 15w14a'] = { pos = 621, section = 32 },
['Boat with Chest'] = { pos = 616, section = 27 },
Bohrium = { pos = 1784, section = 34 },
Bone = { pos = 3502, section = 23 },
['Bone Block'] = { pos = 3356, section = 15 },
['Bone Meal'] = { pos = 3155, section = 6 },
Book = { pos = 3503, section = 23 },
['Book and Quill'] = { pos = 3532, section = 25 },
Bookshelf = { pos = 3240, section = 12 },
Border = { pos = 1593, section = 20 },
Boron = { pos = 1785, section = 34 },
['Boron Trioxide'] = { pos = 1915, section = 37 },
["Bottle o' Enchanting"] = { pos = 3466, section = 22 },
['Bottle of Mob'] = { pos = 1243, section = 32 },
['Bottle of Void'] = { pos = 1301, section = 32 },
Bow = { pos = 1280, section = 28 },
['Bow BE'] = { pos = 1602, section = 28 },
Bowl = { pos = 3533, section = 25 },
['Box of Infinite Books'] = { pos = 265, section = 32 },
['Brain Coral'] = { pos = 1712, section = 15 },
['Brain Coral Block'] = { pos = 1707, section = 15 },
['Brain Coral Block Revision 1'] = { pos = 1702, section = 29 },
['Brain Coral Fan'] = { pos = 2132, section = 15 },
['Brain Coral Fan Revision 1'] = { pos = 1723, section = 29 },
['Brain Coral Fan Revision 2'] = { pos = 2136, section = 29 },
Bread = { pos = 3197, section = 10 },
['Bread Revision 1'] = { pos = 2035, section = 29 },
['Brewer Pottery Sherd'] = { pos = 1222, section = 44 },
['Brewing Stand'] = { pos = 3597, section = 26 },
Brick = { pos = 3504, section = 23 },
['Brick Slab'] = { pos = 3241, section = 12 },
['Brick Slab Old'] = { pos = 871, section = 12 },
['Brick Stairs'] = { pos = 3242, section = 12 },
['Brick Stairs Left'] = { pos = 2257, section = 42 },
['Brick Wall'] = { pos = 3243, section = 12 },
['Brick Wall BE'] = { pos = 22, section = 12 },
Bricks = { pos = 110, section = 12 },
['Bricks Old'] = { pos = 870, section = 12 },
['Broken Anvil'] = { pos = 448, section = 26 },
['Broken Elytra'] = { pos = 2471, section = 1 },
Bromine = { pos = 1786, section = 34 },
['Brown Balloon'] = { pos = 1930, section = 33 },
['Brown Banner'] = { pos = 716, section = 7 },
['Brown Banner 15w14a'] = { pos = 474, section = 32 },
['Brown Base Banner'] = { pos = 2606, section = 2 },
['Brown Base Dexter Canton Banner'] = { pos = 2607, section = 2 },
['Brown Base Gradient Banner'] = { pos = 2608, section = 2 },
['Brown Base Indented Banner'] = { pos = 2609, section = 2 },
['Brown Base Sinister Canton Banner'] = { pos = 2610, section = 2 },
['Brown Beaker'] = { pos = 1893, section = 35 },
['Brown Bed'] = { pos = 3173, section = 7 },
['Brown Bed BE'] = { pos = 1547, section = 7 },
['Brown Bed LCE'] = { pos = 1547, section = 7 },
['Brown Bend Banner'] = { pos = 2611, section = 2 },
['Brown Bend Sinister Banner'] = { pos = 2612, section = 2 },
['Brown Bordure Banner'] = { pos = 2613, section = 2 },
['Brown Bordure Indented Banner'] = { pos = 2614, section = 2 },
['Brown Candle'] = { pos = 398, section = 7 },
['Brown Carpet'] = { pos = 1623, section = 7 },
['Brown Carpet Revision 1'] = { pos = 717, section = 40 },
['Brown Chevron Banner'] = { pos = 2615, section = 2 },
['Brown Chief Banner'] = { pos = 2616, section = 2 },
['Brown Chief Dexter Canton Banner'] = { pos = 2617, section = 2 },
['Brown Chief Indented Banner'] = { pos = 2618, section = 2 },
['Brown Chief Sinister Canton Banner'] = { pos = 2619, section = 2 },
['Brown Concrete'] = { pos = 1481, section = 7 },
['Brown Concrete Powder'] = { pos = 1482, section = 7 },
['Brown Creeper Charge Banner'] = { pos = 2620, section = 2 },
['Brown Cross Banner'] = { pos = 2621, section = 2 },
['Brown Dye'] = { pos = 2377, section = 6 },
['Brown Fess Banner'] = { pos = 2622, section = 2 },
['Brown Field Masoned Banner'] = { pos = 2623, section = 2 },
['Brown Firework Star'] = { pos = 806, section = 9 },
['Brown Flask'] = { pos = 1904, section = 36 },
['Brown Flower Charge Banner'] = { pos = 2624, section = 2 },
['Brown Glazed Terracotta'] = { pos = 1483, section = 7 },
['Brown Globe Banner'] = { pos = 37, section = 2 },
['Brown Glow Stick'] = { pos = 1978, section = 33 },
['Brown Gradient Banner'] = { pos = 2625, section = 2 },
['Brown Inverted Chevron Banner'] = { pos = 2626, section = 2 },
['Brown Jar'] = { pos = 1918, section = 37 },
['Brown Lozenge Banner'] = { pos = 2627, section = 2 },
['Brown Mushroom'] = { pos = 3409, section = 19 },
['Brown Mushroom Block'] = { pos = 3408, section = 19 },
['Brown Pale Banner'] = { pos = 2628, section = 2 },
['Brown Pale Dexter Banner'] = { pos = 2629, section = 2 },
['Brown Pale Sinister Banner'] = { pos = 2630, section = 2 },
['Brown Paly Banner'] = { pos = 2631, section = 2 },
['Brown Per Bend Banner'] = { pos = 2632, section = 2 },
['Brown Per Bend Inverted Banner'] = { pos = 2633, section = 2 },
['Brown Per Bend Sinister Banner'] = { pos = 2634, section = 2 },
['Brown Per Bend Sinister Inverted Banner'] = { pos = 2635, section = 2 },
['Brown Per Fess Banner'] = { pos = 2636, section = 2 },
['Brown Per Fess Inverted Banner'] = { pos = 2637, section = 2 },
['Brown Per Pale Banner'] = { pos = 2638, section = 2 },
['Brown Per Pale Inverted Banner'] = { pos = 2639, section = 2 },
['Brown Piglin Banner'] = { pos = 361, section = 2 },
['Brown Roundel Banner'] = { pos = 2640, section = 2 },
['Brown Saltire Banner'] = { pos = 2641, section = 2 },
['Brown Shield'] = { pos = 2472, section = 1 },
['Brown Shulker Box'] = { pos = 1605, section = 7 },
['Brown Shulker Box Revision 1'] = { pos = 1418, section = 40 },
['Brown Skull Charge Banner'] = { pos = 2642, section = 2 },
['Brown Snout Banner'] = { pos = 361, section = 2 },
['Brown Stained Glass'] = { pos = 719, section = 7 },
['Brown Stained Glass Pane'] = { pos = 720, section = 7 },
['Brown Stained Glass Pane BE'] = { pos = 2010, section = 7 },
['Brown Terracotta'] = { pos = 718, section = 7 },
['Brown Thing Banner'] = { pos = 2643, section = 2 },
['Brown Tinted Glass'] = { pos = 1297, section = 40 },
['Brown Tinted Glass Pane'] = { pos = 5, section = 40 },
['Brown Wood Planks'] = { pos = 246, section = 30 },
['Brown Wool'] = { pos = 1525, section = 7 },
['Brown Wool Revision 2'] = { pos = 721, section = 40 },
Brush = { pos = 1206, section = 25 },
['Bubble Column'] = { pos = 2364, section = 15 },
['Bubble Coral'] = { pos = 1713, section = 15 },
['Bubble Coral Block'] = { pos = 1708, section = 15 },
['Bubble Coral Block Revision 1'] = { pos = 1703, section = 29 },
['Bubble Coral Fan'] = { pos = 2133, section = 15 },
['Bubble Coral Fan Revision 1'] = { pos = 1724, section = 29 },
['Bubble Coral Fan Revision 2'] = { pos = 2137, section = 29 },
Bucket = { pos = 3146, section = 4 },
['Bucket of Axolotl'] = { pos = 445, section = 4 },
['Bucket of Cod'] = { pos = 1686, section = 4 },
['Bucket of Mud'] = { pos = 92, section = 38 },
['Bucket of Pufferfish'] = { pos = 1687, section = 4 },
['Bucket of Pufferfish BE'] = { pos = 2087, section = 4 },
['Bucket of Salmon'] = { pos = 1688, section = 4 },
['Bucket of Tadpole'] = { pos = 573, section = 4 },
['Bucket of Tropical Fish'] = { pos = 2028, section = 4 },
['Bucket of Tropical Fish BE'] = { pos = 1685, section = 29 },
['Budding Amethyst'] = { pos = 399, section = 15 },
Bundle = { pos = 447, section = 25 },
['Buried Treasure Map'] = { pos = 3579, section = 25 },
['Buried Treasure Map BE'] = { pos = 123, section = 25 },
['Buried Treasure Map Revision 1'] = { pos = 1219, section = 25 },
['Burn Pottery Sherd'] = { pos = 1223, section = 44 },
Buttercup = { pos = 109, section = 38 },
['Byte Tag'] = { pos = 1244, section = 32 },
Cactus = { pos = 3410, section = 19 },
['Cactus BE Revision 1'] = { pos = 2163, section = 29 },
['Cactus Green'] = { pos = 689, section = 6 },
Cadmium = { pos = 1787, section = 34 },
Caesium = { pos = 1792, section = 34 },
Cake = { pos = 3598, section = 26 },
['Cake Revision 1'] = { pos = 2, section = 29 },
Calcite = { pos = 432, section = 15 },
Calcium = { pos = 1788, section = 34 },
['Calcium Bromide'] = { pos = 1915, section = 37 },
['Calcium Chloride'] = { pos = 1915, section = 37 },
Californium = { pos = 1789, section = 34 },
['Camel Spawn Egg'] = { pos = 683, section = 24 },
Camera = { pos = 1949, section = 20 },
['Camera (old)'] = { pos = 1365, section = 20 },
Campfire = { pos = 2459, section = 26 },
Candle = { pos = 400, section = 26 },
['Capri Cloth'] = { pos = 232, section = 40 },
Carbon = { pos = 1790, section = 34 },
Carrot = { pos = 3198, section = 10 },
['Carrot on a Stick'] = { pos = 3534, section = 25 },
['Carrot Revision 2'] = { pos = 127, section = 29 },
['Cartography Table'] = { pos = 2452, section = 26 },
['Cartography Table Revision 1'] = { pos = 2443, section = 26 },
['Carved Pumpkin'] = { pos = 3411, section = 19 },
['Cast Fishing Rod'] = { pos = 227, section = 25 },
['Cat Spawn Egg'] = { pos = 2410, section = 24 },
['Cat Spawn Egg Revision 1'] = { pos = 1370, section = 39 },
Cauldron = { pos = 3599, section = 26 },
['Cave Air'] = { pos = 2363, section = 15 },
['Cave Spider Spawn Egg'] = { pos = 1144, section = 24 },
['Cave Spider Spawn Egg Revision 1'] = { pos = 1369, section = 39 },
Cerium = { pos = 1791, section = 34 },
['Cerium Chloride'] = { pos = 1915, section = 37 },
Cesium = { pos = 1792, section = 34 },
Chain = { pos = 290, section = 5 },
['Chainmail Boots'] = { pos = 2473, section = 1 },
['Chainmail Chestplate'] = { pos = 2474, section = 1 },
['Chainmail Helmet'] = { pos = 2475, section = 1 },
['Chainmail Leggings'] = { pos = 2476, section = 1 },
Charcoal = { pos = 3505, section = 23 },
['Charcoal Revision 1'] = { pos = 1119, section = 29 },
['Chartreuse Cloth'] = { pos = 234, section = 40 },
Cheese = { pos = 1245, section = 32 },
['Cherry Boat'] = { pos = 1207, section = 27 },
['Cherry Boat with Chest'] = { pos = 1208, section = 27 },
['Cherry Button'] = { pos = 1188, section = 13 },
['Cherry Door'] = { pos = 1189, section = 13 },
['Cherry Fence'] = { pos = 1181, section = 12 },
['Cherry Fence Gate'] = { pos = 1190, section = 13 },
['Cherry Hanging Sign'] = { pos = 1179, section = 5 },
['Cherry Leaves'] = { pos = 1195, section = 19 },
['Cherry Log'] = { pos = 1196, section = 19 },
['Cherry Planks'] = { pos = 1182, section = 12 },
['Cherry Pressure Plate'] = { pos = 1191, section = 13 },
['Cherry Sapling'] = { pos = 1197, section = 19 },
['Cherry Sign'] = { pos = 1194, section = 17 },
['Cherry Slab'] = { pos = 1183, section = 12 },
['Cherry Stairs'] = { pos = 1184, section = 12 },
['Cherry Trapdoor'] = { pos = 1192, section = 13 },
['Cherry Wood'] = { pos = 1185, section = 12 },
['Cherry Wood Button'] = { pos = 1188, section = 13 },
['Cherry Wood Door'] = { pos = 1189, section = 13 },
['Cherry Wood Fence'] = { pos = 1181, section = 12 },
['Cherry Wood Fence Gate'] = { pos = 1190, section = 13 },
['Cherry Wood Planks'] = { pos = 1182, section = 12 },
['Cherry Wood Pressure Plate'] = { pos = 1191, section = 13 },
['Cherry Wood Sign'] = { pos = 1194, section = 17 },
['Cherry Wood Slab'] = { pos = 1183, section = 12 },
['Cherry Wood Stairs'] = { pos = 1184, section = 12 },
['Cherry Wood Trapdoor'] = { pos = 1192, section = 13 },
Chest = { pos = 1239, section = 26 },
['Chest BE'] = { pos = 58, section = 26 },
['Chest Revision 2'] = { pos = 375, section = 29 },
['Chicken Spawn Egg'] = { pos = 1145, section = 24 },
['Chicken Spawn Egg Revision 1'] = { pos = 1384, section = 39 },
['Chipped Anvil'] = { pos = 3600, section = 26 },
['Chiseled Bookshelf'] = { pos = 688, section = 26 },
['Chiseled Deepslate'] = { pos = 489, section = 12 },
['Chiseled Nether Bricks'] = { pos = 269, section = 16 },
['Chiseled Polished Blackstone'] = { pos = 270, section = 16 },
['Chiseled Quartz Block'] = { pos = 872, section = 12 },
['Chiseled Red Sandstone'] = { pos = 3244, section = 12 },
['Chiseled Sandstone'] = { pos = 3245, section = 12 },
['Chiseled Stone Bricks'] = { pos = 3357, section = 15 },
['Chiseled Stone Bricks Monster Egg'] = { pos = 3357, section = 15 },
Chlorine = { pos = 1793, section = 34 },
['Chorus Flower'] = { pos = 3412, section = 19 },
['Chorus Fruit'] = { pos = 3199, section = 10 },
['Chorus Plant'] = { pos = 3413, section = 19 },
Chromium = { pos = 1794, section = 34 },
Clay = { pos = 3358, section = 15 },
['Clay (ball)'] = { pos = 3506, section = 23 },
['Clay (block)'] = { pos = 3358, section = 15 },
['Clay Ball'] = { pos = 3506, section = 23 },
Clock = { pos = 549, section = 25 },
['Clock Revision 1'] = { pos = 2169, section = 29 },
['Clock Revision 2'] = { pos = 511, section = 29 },
Clownfish = { pos = 825, section = 10 },
['Clownfish Revision 1'] = { pos = 825, section = 10 },
['Cluckshroom Spawn Egg'] = { pos = 624, section = 38 },
Coal = { pos = 3507, section = 23 },
['Coal Ore'] = { pos = 3391, section = 18 },
['Coal Revision 2'] = { pos = 1119, section = 29 },
['Coarse Dirt'] = { pos = 974, section = 15 },
['Coast Armor Trim'] = { pos = 204, section = 41 },
['Coast Armor Trim Smithing Template'] = { pos = 204, section = 41 },
Cobalt = { pos = 1795, section = 34 },
['Cobbled Deepslate'] = { pos = 513, section = 12 },
['Cobbled Deepslate Slab'] = { pos = 494, section = 12 },
['Cobbled Deepslate Stairs'] = { pos = 495, section = 12 },
['Cobbled Deepslate Wall'] = { pos = 500, section = 12 },
['Cobbled Deepslate Wall BE'] = { pos = 560, section = 12 },
Cobblestone = { pos = 3359, section = 12 },
['Cobblestone Monster Egg'] = { pos = 3359, section = 12 },
['Cobblestone Slab'] = { pos = 3246, section = 12 },
['Cobblestone Stairs'] = { pos = 3247, section = 12 },
['Cobblestone Stairs Left'] = { pos = 2258, section = 42 },
['Cobblestone Wall'] = { pos = 3248, section = 12 },
['Cobblestone Wall BE'] = { pos = 2024, section = 12 },
Cobweb = { pos = 3360, section = 15 },
['Cocoa Beans'] = { pos = 3156, section = 6 },
['Cod Spawn Egg'] = { pos = 1697, section = 24 },
['Cod Spawn Egg Revision 1'] = { pos = 1968, section = 39 },
Compass = { pos = 550, section = 25 },
['Compass Revision 1'] = { pos = 2168, section = 29 },
['Compass Revision 2'] = { pos = 512, section = 29 },
Composter = { pos = 2460, section = 13 },
['Compound Creator'] = { pos = 1931, section = 33 },
['Compound Tag'] = { pos = 1246, section = 32 },
Conduit = { pos = 2033, section = 26 },
['Conduit BE'] = { pos = 213, section = 26 },
['Cooked Beef'] = { pos = 848, section = 10 },
['Cooked Chicken'] = { pos = 3200, section = 10 },
['Cooked Cod'] = { pos = 1690, section = 10 },
['Cooked Fish'] = { pos = 827, section = 10 },
['Cooked Fish Revision 1'] = { pos = 827, section = 10 },
['Cooked Mutton'] = { pos = 3201, section = 10 },
['Cooked Porkchop'] = { pos = 3202, section = 10 },
['Cooked Rabbit'] = { pos = 3203, section = 10 },
['Cooked Salmon'] = { pos = 1691, section = 10 },
['Cooked Salmon 3DS'] = { pos = 831, section = 10 },
['Cooked Salmon Revision 1'] = { pos = 831, section = 10 },
Cookie = { pos = 3204, section = 10 },
Copernicium = { pos = 1796, section = 34 },
Copper = { pos = 1797, section = 34 },
['Copper Block'] = { pos = 401, section = 12 },
['Copper Horn'] = { pos = 583, section = 25 },
['Copper Ingot'] = { pos = 450, section = 23 },
['Copper Ore'] = { pos = 449, section = 18 },
['Copper Sink'] = { pos = 1247, section = 32 },
['Copper Spleaves'] = { pos = 1248, section = 32 },
['Copper Trim Chainmail Boots'] = { pos = 862, section = 43 },
['Copper Trim Chainmail Chestplate'] = { pos = 863, section = 43 },
['Copper Trim Chainmail Helmet'] = { pos = 864, section = 43 },
['Copper Trim Chainmail Leggings'] = { pos = 865, section = 43 },
['Copper Trim Diamond Boots'] = { pos = 866, section = 43 },
['Copper Trim Diamond Chestplate'] = { pos = 868, section = 43 },
['Copper Trim Diamond Helmet'] = { pos = 869, section = 43 },
['Copper Trim Diamond Leggings'] = { pos = 873, section = 43 },
['Copper Trim Golden Boots'] = { pos = 874, section = 43 },
['Copper Trim Golden Chestplate'] = { pos = 875, section = 43 },
['Copper Trim Golden Helmet'] = { pos = 876, section = 43 },
['Copper Trim Golden Leggings'] = { pos = 877, section = 43 },
['Copper Trim Iron Boots'] = { pos = 878, section = 43 },
['Copper Trim Iron Chestplate'] = { pos = 879, section = 43 },
['Copper Trim Iron Helmet'] = { pos = 880, section = 43 },
['Copper Trim Iron Leggings'] = { pos = 882, section = 43 },
['Copper Trim Leather Boots'] = { pos = 883, section = 43 },
['Copper Trim Leather Cap'] = { pos = 885, section = 43 },
['Copper Trim Leather Pants'] = { pos = 887, section = 43 },
['Copper Trim Leather Tunic'] = { pos = 888, section = 43 },
['Copper Trim Netherite Boots'] = { pos = 889, section = 43 },
['Copper Trim Netherite Chestplate'] = { pos = 890, section = 43 },
['Copper Trim Netherite Helmet'] = { pos = 891, section = 43 },
['Copper Trim Netherite Leggings'] = { pos = 892, section = 43 },
['Copper Trim Turtle Shell'] = { pos = 893, section = 43 },
Cornflower = { pos = 2389, section = 19 },
['Cow Spawn Egg'] = { pos = 1146, section = 24 },
['Cow Spawn Egg Revision 1'] = { pos = 1385, section = 39 },
['Cracked Deepslate Bricks'] = { pos = 520, section = 12 },
['Cracked Deepslate Tiles'] = { pos = 521, section = 12 },
['Cracked Nether Bricks'] = { pos = 271, section = 16 },
['Cracked Polished Blackstone Bricks'] = { pos = 272, section = 16 },
['Cracked Stone Bricks'] = { pos = 3361, section = 15 },
['Cracked Stone Bricks Monster Egg'] = { pos = 3361, section = 15 },
['Crafting Table'] = { pos = 3601, section = 26 },
['Creeper Head'] = { pos = 964, section = 14 },
['Creeper Head BE'] = { pos = 215, section = 14 },
['Creeper Spawn Egg'] = { pos = 1147, section = 24 },
['Creeper Spawn Egg Revision 1'] = { pos = 1386, section = 39 },
['Crimson Button'] = { pos = 167, section = 13 },
['Crimson Door'] = { pos = 168, section = 13 },
['Crimson Fence'] = { pos = 648, section = 12 },
['Crimson Fence BE'] = { pos = 161, section = 12 },
['Crimson Fence Gate'] = { pos = 179, section = 13 },
['Crimson Fence Gate BE'] = { pos = 379, section = 13 },
['Crimson Fungus'] = { pos = 158, section = 16 },
['Crimson Hanging Sign'] = { pos = 652, section = 5 },
['Crimson Hyphae'] = { pos = 198, section = 16 },
['Crimson Nylium'] = { pos = 149, section = 16 },
['Crimson Planks'] = { pos = 146, section = 12 },
['Crimson Pressure Plate'] = { pos = 169, section = 13 },
['Crimson Roots'] = { pos = 190, section = 16 },
['Crimson Sign'] = { pos = 177, section = 17 },
['Crimson Slab'] = { pos = 162, section = 12 },
['Crimson Stairs'] = { pos = 163, section = 12 },
['Crimson Stem'] = { pos = 150, section = 16 },
['Crimson Trapdoor'] = { pos = 170, section = 13 },
Crossbow = { pos = 2382, section = 28 },
['Crude Oil'] = { pos = 1891, section = 35 },
['Crying Obsidian'] = { pos = 197, section = 16 },
['Crying Obsidian BE'] = { pos = 509, section = 16 },
['Crystallized Honey'] = { pos = 95, section = 30 },
Cuprum = { pos = 1797, section = 34 },
Curium = { pos = 1798, section = 34 },
['Cut Copper'] = { pos = 402, section = 12 },
['Cut Copper Block'] = { pos = 402, section = 12 },
['Cut Copper Slab'] = { pos = 403, section = 12 },
['Cut Copper Stairs'] = { pos = 404, section = 12 },
['Cut Red Sandstone'] = { pos = 3249, section = 12 },
['Cut Red Sandstone Slab'] = { pos = 2466, section = 12 },
['Cut Sandstone'] = { pos = 3250, section = 12 },
['Cut Sandstone Slab'] = { pos = 2467, section = 12 },
['Cyan Balloon'] = { pos = 1932, section = 33 },
['Cyan Banner'] = { pos = 722, section = 7 },
['Cyan Banner 15w14a'] = { pos = 475, section = 32 },
['Cyan Base Banner'] = { pos = 2644, section = 2 },
['Cyan Base Dexter Canton Banner'] = { pos = 2645, section = 2 },
['Cyan Base Gradient Banner'] = { pos = 2646, section = 2 },
['Cyan Base Indented Banner'] = { pos = 2647, section = 2 },
['Cyan Base Sinister Canton Banner'] = { pos = 2648, section = 2 },
['Cyan Bed'] = { pos = 3174, section = 7 },
['Cyan Bed BE'] = { pos = 1548, section = 7 },
['Cyan Bed LCE'] = { pos = 1548, section = 7 },
['Cyan Bend Banner'] = { pos = 2649, section = 2 },
['Cyan Bend Sinister Banner'] = { pos = 2650, section = 2 },
['Cyan Bordure Banner'] = { pos = 2651, section = 2 },
['Cyan Bordure Indented Banner'] = { pos = 2652, section = 2 },
['Cyan Candle'] = { pos = 405, section = 7 },
['Cyan Carpet'] = { pos = 1624, section = 7 },
['Cyan Carpet Revision 1'] = { pos = 723, section = 40 },
['Cyan Chevron Banner'] = { pos = 2653, section = 2 },
['Cyan Chief Banner'] = { pos = 2655, section = 2 },
['Cyan Chief Dexter Canton Banner'] = { pos = 2656, section = 2 },
['Cyan Chief Indented Banner'] = { pos = 2657, section = 2 },
['Cyan Chief Sinister Canton Banner'] = { pos = 2658, section = 2 },
['Cyan Cloth'] = { pos = 229, section = 40 },
['Cyan Concrete'] = { pos = 1484, section = 7 },
['Cyan Concrete Powder'] = { pos = 1485, section = 7 },
['Cyan Creeper Charge Banner'] = { pos = 2659, section = 2 },
['Cyan Cross Banner'] = { pos = 2660, section = 2 },
['Cyan Dye'] = { pos = 3157, section = 6 },
['Cyan Fess Banner'] = { pos = 2661, section = 2 },
['Cyan Field Masoned Banner'] = { pos = 2662, section = 2 },
['Cyan Firework Star'] = { pos = 807, section = 9 },
['Cyan Flower Charge Banner'] = { pos = 2663, section = 2 },
['Cyan Glazed Terracotta'] = { pos = 1540, section = 7 },
['Cyan Glazed Terracotta Revision 1'] = { pos = 1486, section = 40 },
['Cyan Globe Banner'] = { pos = 38, section = 2 },
['Cyan Glow Stick'] = { pos = 1979, section = 33 },
['Cyan Gradient Banner'] = { pos = 2664, section = 2 },
['Cyan Inverted Chevron Banner'] = { pos = 2654, section = 2 },
['Cyan Lozenge Banner'] = { pos = 2665, section = 2 },
['Cyan Pale Banner'] = { pos = 2666, section = 2 },
['Cyan Pale Dexter Banner'] = { pos = 2667, section = 2 },
['Cyan Pale Sinister Banner'] = { pos = 2668, section = 2 },
['Cyan Paly Banner'] = { pos = 2669, section = 2 },
['Cyan Per Bend Banner'] = { pos = 2670, section = 2 },
['Cyan Per Bend Inverted Banner'] = { pos = 2671, section = 2 },
['Cyan Per Bend Sinister Banner'] = { pos = 2672, section = 2 },
['Cyan Per Bend Sinister Inverted Banner'] = { pos = 2673, section = 2 },
['Cyan Per Fess Banner'] = { pos = 2674, section = 2 },
['Cyan Per Fess Inverted Banner'] = { pos = 2675, section = 2 },
['Cyan Per Pale Banner'] = { pos = 2676, section = 2 },
['Cyan Per Pale Inverted Banner'] = { pos = 2677, section = 2 },
['Cyan Piglin Banner'] = { pos = 362, section = 2 },
['Cyan Roundel Banner'] = { pos = 2678, section = 2 },
['Cyan Saltire Banner'] = { pos = 2679, section = 2 },
['Cyan Shield'] = { pos = 2477, section = 1 },
['Cyan Shulker Box'] = { pos = 1606, section = 7 },
['Cyan Shulker Box Revision 1'] = { pos = 1419, section = 40 },
['Cyan Skull Charge Banner'] = { pos = 2680, section = 2 },
['Cyan Snout Banner'] = { pos = 362, section = 2 },
['Cyan Stained Glass'] = { pos = 725, section = 7 },
['Cyan Stained Glass Pane'] = { pos = 726, section = 7 },
['Cyan Stained Glass Pane BE'] = { pos = 2011, section = 7 },
['Cyan Terracotta'] = { pos = 724, section = 7 },
['Cyan Thing Banner'] = { pos = 2681, section = 2 },
['Cyan Tinted Glass'] = { pos = 1298, section = 40 },
['Cyan Tinted Glass Pane'] = { pos = 6, section = 40 },
['Cyan Wood Planks'] = { pos = 247, section = 30 },
['Cyan Wool'] = { pos = 1526, section = 7 },
['Cyan Wool Revision 2'] = { pos = 727, section = 40 },
Cyanoacrylate = { pos = 1750, section = 33 },
['Damaged Anvil'] = { pos = 3602, section = 26 },
['Damaged Arrow Loaded Crossbow'] = { pos = 2384, section = 28 },
['Damaged Bow'] = { pos = 1281, section = 28 },
['Damaged Brush'] = { pos = 1209, section = 25 },
['Damaged Carrot on a Stick'] = { pos = 3535, section = 25 },
['Damaged Chainmail Boots'] = { pos = 2478, section = 1 },
['Damaged Chainmail Chestplate'] = { pos = 2479, section = 1 },
['Damaged Chainmail Helmet'] = { pos = 2480, section = 1 },
['Damaged Chainmail Leggings'] = { pos = 2481, section = 1 },
['Damaged Crossbow'] = { pos = 2385, section = 28 },
['Damaged Diamond Axe'] = { pos = 3536, section = 25 },
['Damaged Diamond Boots'] = { pos = 2482, section = 1 },
['Damaged Diamond Chestplate'] = { pos = 2483, section = 1 },
['Damaged Diamond Helmet'] = { pos = 2484, section = 1 },
['Damaged Diamond Hoe'] = { pos = 3537, section = 25 },
['Damaged Diamond Leggings'] = { pos = 2485, section = 1 },
['Damaged Diamond Pickaxe'] = { pos = 3538, section = 25 },
['Damaged Diamond Shovel'] = { pos = 3539, section = 25 },
['Damaged Diamond Sword'] = { pos = 3630, section = 28 },
['Damaged Elytra'] = { pos = 2486, section = 1 },
['Damaged Firework Loaded Crossbow'] = { pos = 2386, section = 28 },
['Damaged Fishing Rod'] = { pos = 3540, section = 25 },
['Damaged Flint and Steel'] = { pos = 3541, section = 25 },
['Damaged Golden Axe'] = { pos = 3542, section = 25 },
['Damaged Golden Boots'] = { pos = 2487, section = 1 },
['Damaged Golden Chestplate'] = { pos = 2488, section = 1 },
['Damaged Golden Helmet'] = { pos = 2489, section = 1 },
['Damaged Golden Hoe'] = { pos = 3543, section = 25 },
['Damaged Golden Leggings'] = { pos = 2490, section = 1 },
['Damaged Golden Pickaxe'] = { pos = 3544, section = 25 },
['Damaged Golden Shovel'] = { pos = 3545, section = 25 },
['Damaged Golden Sword'] = { pos = 3631, section = 28 },
['Damaged Iron Axe'] = { pos = 3546, section = 25 },
['Damaged Iron Boots'] = { pos = 2491, section = 1 },
['Damaged Iron Chestplate'] = { pos = 2492, section = 1 },
['Damaged Iron Helmet'] = { pos = 2493, section = 1 },
['Damaged Iron Hoe'] = { pos = 3547, section = 25 },
['Damaged Iron Leggings'] = { pos = 2494, section = 1 },
['Damaged Iron Pickaxe'] = { pos = 3548, section = 25 },
['Damaged Iron Shovel'] = { pos = 3549, section = 25 },
['Damaged Iron Sword'] = { pos = 3632, section = 28 },
['Damaged Leather Boots'] = { pos = 2495, section = 1 },
['Damaged Leather Cap'] = { pos = 2496, section = 1 },
['Damaged Leather Pants'] = { pos = 2497, section = 1 },
['Damaged Leather Tunic'] = { pos = 2498, section = 1 },
['Damaged Netherite Axe'] = { pos = 181, section = 25 },
['Damaged Netherite Boots'] = { pos = 182, section = 1 },
['Damaged Netherite Chestplate'] = { pos = 183, section = 1 },
['Damaged Netherite Helmet'] = { pos = 184, section = 1 },
['Damaged Netherite Hoe'] = { pos = 185, section = 25 },
['Damaged Netherite Leggings'] = { pos = 186, section = 1 },
['Damaged Netherite Pickaxe'] = { pos = 187, section = 25 },
['Damaged Netherite Shovel'] = { pos = 188, section = 25 },
['Damaged Netherite Sword'] = { pos = 189, section = 28 },
['Damaged Shears'] = { pos = 3550, section = 25 },
['Damaged Shield'] = { pos = 2499, section = 1 },
['Damaged Stone Axe'] = { pos = 3551, section = 25 },
['Damaged Stone Hoe'] = { pos = 3552, section = 25 },
['Damaged Stone Pickaxe'] = { pos = 3553, section = 25 },
['Damaged Stone Shovel'] = { pos = 3554, section = 25 },
['Damaged Stone Sword'] = { pos = 3633, section = 28 },
['Damaged Trident'] = { pos = 100, section = 28 },
['Damaged Turtle Shell'] = { pos = 2456, section = 1 },
['Damaged Warped Fungus on a Stick'] = { pos = 382, section = 25 },
['Damaged Wooden Axe'] = { pos = 3555, section = 25 },
['Damaged Wooden Hoe'] = { pos = 3556, section = 25 },
['Damaged Wooden Pickaxe'] = { pos = 3557, section = 25 },
['Damaged Wooden Shovel'] = { pos = 3558, section = 25 },
['Damaged Wooden Sword'] = { pos = 3634, section = 28 },
Dandelion = { pos = 3414, section = 19 },
['Dandelion Yellow'] = { pos = 692, section = 6 },
['Danger Pottery Sherd'] = { pos = 1224, section = 44 },
['Dark Gray Beaker'] = { pos = 1894, section = 35 },
['Dark Gray Cloth'] = { pos = 230, section = 40 },
['Dark Gray Flask'] = { pos = 1905, section = 36 },
['Dark Gray Jar'] = { pos = 1919, section = 37 },
['Dark Oak Boat'] = { pos = 638, section = 27 },
['Dark Oak Boat Revision 2'] = { pos = 3620, section = 29 },
['Dark Oak Boat with Chest'] = { pos = 614, section = 27 },
['Dark Oak Button'] = { pos = 3332, section = 13 },
['Dark Oak Door'] = { pos = 568, section = 13 },
['Dark Oak Door Revision 3'] = { pos = 939, section = 13 },
['Dark Oak Fence'] = { pos = 646, section = 12 },
['Dark Oak Fence BE'] = { pos = 3252, section = 12 },
['Dark Oak Fence Gate'] = { pos = 3251, section = 13 },
['Dark Oak Fence Gate BE'] = { pos = 54, section = 13 },
['Dark Oak Hanging Sign'] = { pos = 653, section = 5 },
['Dark Oak Leaves'] = { pos = 3415, section = 19 },
['Dark Oak Log'] = { pos = 3416, section = 19 },
['Dark Oak Planks'] = { pos = 881, section = 12 },
['Dark Oak Pressure Plate'] = { pos = 3333, section = 13 },
['Dark Oak Sapling'] = { pos = 3417, section = 19 },
['Dark Oak Sign'] = { pos = 2397, section = 17 },
['Dark Oak Slab'] = { pos = 3253, section = 12 },
['Dark Oak Stairs'] = { pos = 3254, section = 12 },
['Dark Oak Trapdoor'] = { pos = 1651, section = 13 },
['Dark Oak Wood'] = { pos = 3255, section = 12 },
['Dark Oak Wood Button'] = { pos = 3332, section = 13 },
['Dark Oak Wood Door'] = { pos = 568, section = 13 },
['Dark Oak Wood Fence'] = { pos = 646, section = 12 },
['Dark Oak Wood Fence Gate'] = { pos = 3251, section = 13 },
['Dark Oak Wood Planks'] = { pos = 881, section = 12 },
['Dark Oak Wood Pressure Plate'] = { pos = 3333, section = 13 },
['Dark Oak Wood Sign'] = { pos = 2397, section = 17 },
['Dark Oak Wood Slab'] = { pos = 3253, section = 12 },
['Dark Oak Wood Stairs'] = { pos = 3254, section = 12 },
['Dark Oak Wood Trapdoor'] = { pos = 1651, section = 13 },
['Dark Prismarine'] = { pos = 3362, section = 15 },
['Dark Prismarine Slab'] = { pos = 3256, section = 12 },
['Dark Prismarine Stairs'] = { pos = 3257, section = 12 },
Darmstadtium = { pos = 1799, section = 34 },
['Daylight Detector'] = { pos = 1242, section = 26 },
['Daylight Sensor'] = { pos = 1242, section = 26 },
['Dead Brain Coral'] = { pos = 2368, section = 15 },
['Dead Brain Coral Block'] = { pos = 1718, section = 15 },
['Dead Brain Coral Fan'] = { pos = 2146, section = 15 },
['Dead Brain Coral Fan Revision 1'] = { pos = 1737, section = 29 },
['Dead Bubble Coral'] = { pos = 2369, section = 15 },
['Dead Bubble Coral Block'] = { pos = 1719, section = 15 },
['Dead Bubble Coral Fan'] = { pos = 2147, section = 15 },
['Dead Bubble Coral Fan Revision 1'] = { pos = 1738, section = 29 },
['Dead Bush'] = { pos = 3418, section = 19 },
['Dead Coral'] = { pos = 1701, section = 29 },
['Dead Fire Coral'] = { pos = 2370, section = 15 },
['Dead Fire Coral Block'] = { pos = 1720, section = 15 },
['Dead Fire Coral Fan'] = { pos = 2148, section = 15 },
['Dead Fire Coral Fan Revision 1'] = { pos = 1739, section = 29 },
['Dead Horn Coral'] = { pos = 2371, section = 15 },
['Dead Horn Coral Block'] = { pos = 1721, section = 15 },
['Dead Horn Coral Fan'] = { pos = 2149, section = 15 },
['Dead Horn Coral Fan Revision 1'] = { pos = 1740, section = 29 },
['Dead Tube Coral'] = { pos = 2367, section = 15 },
['Dead Tube Coral Block'] = { pos = 1717, section = 15 },
['Dead Tube Coral Fan'] = { pos = 2150, section = 15 },
['Dead Tube Coral Fan Revision 1'] = { pos = 1741, section = 29 },
['Debug Stick'] = { pos = 1140, section = 23 },
['Decorated Pot'] = { pos = 1180, section = 5 },
Deepslate = { pos = 503, section = 15 },
['Deepslate Brick Slab'] = { pos = 490, section = 12 },
['Deepslate Brick Stairs'] = { pos = 491, section = 12 },
['Deepslate Brick Wall'] = { pos = 492, section = 12 },
['Deepslate Brick Wall BE'] = { pos = 563, section = 12 },
['Deepslate Bricks'] = { pos = 493, section = 12 },
['Deepslate Coal Ore'] = { pos = 522, section = 18 },
['Deepslate Copper Ore'] = { pos = 523, section = 18 },
['Deepslate Diamond Ore'] = { pos = 514, section = 18 },
['Deepslate Emerald Ore'] = { pos = 524, section = 18 },
['Deepslate Gold Ore'] = { pos = 515, section = 18 },
['Deepslate Iron Ore'] = { pos = 516, section = 18 },
['Deepslate Lapis Lazuli Ore'] = { pos = 517, section = 18 },
['Deepslate Redstone Ore'] = { pos = 518, section = 18 },
['Deepslate Tile Slab'] = { pos = 496, section = 12 },
['Deepslate Tile Stairs'] = { pos = 497, section = 12 },
['Deepslate Tile Wall'] = { pos = 498, section = 12 },
['Deepslate Tile Wall BE'] = { pos = 561, section = 12 },
['Deepslate Tiles'] = { pos = 499, section = 12 },
Deny = { pos = 1436, section = 20 },
['Desert Village Map'] = { pos = 1326, section = 25 },
['Desert Village Map BE'] = { pos = 1327, section = 25 },
['Detector Rail'] = { pos = 3334, section = 13 },
Diamond = { pos = 3508, section = 23 },
['Diamond Axe'] = { pos = 3559, section = 25 },
['Diamond Boots'] = { pos = 2500, section = 1 },
['Diamond Chestplate'] = { pos = 2501, section = 1 },
['Diamond Drows'] = { pos = 1320, section = 32 },
['Diamond Heart'] = { pos = 118, section = 32 },
['Diamond Helmet'] = { pos = 2502, section = 1 },
['Diamond Hoe'] = { pos = 3560, section = 25 },
['Diamond Horse Armor'] = { pos = 29, section = 1 },
['Diamond Leggings'] = { pos = 2503, section = 1 },
['Diamond Ore'] = { pos = 3392, section = 18 },
['Diamond Pickaxe'] = { pos = 3561, section = 25 },
['Diamond Shovel'] = { pos = 3562, section = 25 },
['Diamond Sword'] = { pos = 3635, section = 28 },
['Diamond Trim Chainmail Boots'] = { pos = 894, section = 43 },
['Diamond Trim Chainmail Chestplate'] = { pos = 895, section = 43 },
['Diamond Trim Chainmail Helmet'] = { pos = 897, section = 43 },
['Diamond Trim Chainmail Leggings'] = { pos = 898, section = 43 },
['Diamond Trim Diamond Boots'] = { pos = 899, section = 43 },
['Diamond Trim Diamond Chestplate'] = { pos = 900, section = 43 },
['Diamond Trim Diamond Helmet'] = { pos = 902, section = 43 },
['Diamond Trim Diamond Leggings'] = { pos = 905, section = 43 },
['Diamond Trim Golden Boots'] = { pos = 912, section = 43 },
['Diamond Trim Golden Chestplate'] = { pos = 913, section = 43 },
['Diamond Trim Golden Helmet'] = { pos = 914, section = 43 },
['Diamond Trim Golden Leggings'] = { pos = 915, section = 43 },
['Diamond Trim Iron Boots'] = { pos = 916, section = 43 },
['Diamond Trim Iron Chestplate'] = { pos = 917, section = 43 },
['Diamond Trim Iron Helmet'] = { pos = 918, section = 43 },
['Diamond Trim Iron Leggings'] = { pos = 919, section = 43 },
['Diamond Trim Leather Boots'] = { pos = 921, section = 43 },
['Diamond Trim Leather Cap'] = { pos = 922, section = 43 },
['Diamond Trim Leather Pants'] = { pos = 924, section = 43 },
['Diamond Trim Leather Tunic'] = { pos = 925, section = 43 },
['Diamond Trim Netherite Boots'] = { pos = 926, section = 43 },
['Diamond Trim Netherite Chestplate'] = { pos = 927, section = 43 },
['Diamond Trim Netherite Helmet'] = { pos = 928, section = 43 },
['Diamond Trim Netherite Leggings'] = { pos = 930, section = 43 },
['Diamond Trim Turtle Shell'] = { pos = 931, section = 43 },
Diorite = { pos = 3363, section = 15 },
['Diorite Slab'] = { pos = 3258, section = 12 },
['Diorite Stairs'] = { pos = 3259, section = 12 },
['Diorite Wall'] = { pos = 3260, section = 12 },
['Diorite Wall BE'] = { pos = 23, section = 12 },
Dirt = { pos = 979, section = 15 },
['Dirt Path'] = { pos = 1348, section = 15 },
['Disc Fragment 5'] = { pos = 631, section = 23 },
Dispenser = { pos = 3603, section = 26 },
['Dispenser Revision 1'] = { pos = 2239, section = 29 },
['Dolphin Spawn Egg'] = { pos = 1967, section = 24 },
['Donkey Spawn Egg'] = { pos = 1371, section = 24 },
['Donkey Spawn Egg Revision 1'] = { pos = 1152, section = 24 },
['Double Smooth Stone Slab'] = { pos = 884, section = 12 },
['Double Tag'] = { pos = 1250, section = 32 },
['Dragon Egg'] = { pos = 3187, section = 8 },
['Dragon Egg BE'] = { pos = 506, section = 8 },
['Dragon Head'] = { pos = 965, section = 14 },
['Dragon Head BE'] = { pos = 216, section = 14 },
['Dragon Head BE Revision 1'] = { pos = 108, section = 29 },
["Dragon's Breath"] = { pos = 3138, section = 3 },
['Dried Kelp'] = { pos = 1682, section = 10 },
['Dried Kelp Block'] = { pos = 1669, section = 12 },
['Dripstone Block'] = { pos = 435, section = 15 },
Dropper = { pos = 3604, section = 26 },
['Drowned Spawn Egg'] = { pos = 1727, section = 24 },
Dubnium = { pos = 1800, section = 34 },
['Dune Armor Trim'] = { pos = 702, section = 41 },
['Dune Armor Trim Smithing Template'] = { pos = 702, section = 41 },
['Dupe Hack'] = { pos = 1321, section = 32 },
Dysprosium = { pos = 1801, section = 34 },
['Earth Ruby'] = { pos = 130, section = 38 },
['Echo Shard'] = { pos = 622, section = 23 },
Egg = { pos = 3205, section = 10 },
Einsteinium = { pos = 1802, section = 34 },
['Elder Guardian Spawn Egg'] = { pos = 1372, section = 24 },
['Element Constructor'] = { pos = 1933, section = 33 },
Elixir = { pos = 1751, section = 33 },
Elytra = { pos = 2504, section = 1 },
Emerald = { pos = 3509, section = 23 },
['Emerald Ore'] = { pos = 3393, section = 18 },
['Emerald Trim Chainmail Boots'] = { pos = 932, section = 43 },
['Emerald Trim Chainmail Chestplate'] = { pos = 934, section = 43 },
['Emerald Trim Chainmail Helmet'] = { pos = 936, section = 43 },
['Emerald Trim Chainmail Leggings'] = { pos = 938, section = 43 },
['Emerald Trim Diamond Boots'] = { pos = 940, section = 43 },
['Emerald Trim Diamond Chestplate'] = { pos = 943, section = 43 },
['Emerald Trim Diamond Helmet'] = { pos = 944, section = 43 },
['Emerald Trim Diamond Leggings'] = { pos = 946, section = 43 },
['Emerald Trim Golden Boots'] = { pos = 947, section = 43 },
['Emerald Trim Golden Chestplate'] = { pos = 948, section = 43 },
['Emerald Trim Golden Helmet'] = { pos = 949, section = 43 },
['Emerald Trim Golden Leggings'] = { pos = 950, section = 43 },
['Emerald Trim Iron Boots'] = { pos = 951, section = 43 },
['Emerald Trim Iron Chestplate'] = { pos = 952, section = 43 },
['Emerald Trim Iron Helmet'] = { pos = 953, section = 43 },
['Emerald Trim Iron Leggings'] = { pos = 955, section = 43 },
['Emerald Trim Leather Boots'] = { pos = 956, section = 43 },
['Emerald Trim Leather Cap'] = { pos = 957, section = 43 },
['Emerald Trim Leather Pants'] = { pos = 959, section = 43 },
['Emerald Trim Leather Tunic'] = { pos = 960, section = 43 },
['Emerald Trim Netherite Boots'] = { pos = 961, section = 43 },
['Emerald Trim Netherite Chestplate'] = { pos = 962, section = 43 },
['Emerald Trim Netherite Helmet'] = { pos = 963, section = 43 },
['Emerald Trim Netherite Leggings'] = { pos = 970, section = 43 },
['Emerald Trim Turtle Shell'] = { pos = 972, section = 43 },
['Empty Locator Map'] = { pos = 3563, section = 25 },
['Empty Map'] = { pos = 3563, section = 25 },
['Enchanted Apple'] = { pos = 3206, section = 10 },
['Enchanted Book'] = { pos = 3564, section = 25 },
['Enchanted Golden Apple'] = { pos = 3206, section = 10 },
['Enchanting Table'] = { pos = 3605, section = 26 },
['Enchanting Table BE'] = { pos = 214, section = 26 },
['Enchantment Table'] = { pos = 3605, section = 26 },
['End Crystal'] = { pos = 3188, section = 8 },
['End Gateway'] = { pos = 1561, section = 8 },
['End Gateway BE'] = { pos = 352, section = 8 },
['End Portal'] = { pos = 1010, section = 17 },
['End Portal BE'] = { pos = 353, section = 8 },
['End Portal Frame'] = { pos = 3189, section = 8 },
['End Portal Frame BE'] = { pos = 507, section = 8 },
['End Rod'] = { pos = 3190, section = 8 },
['End Rod BE'] = { pos = 208, section = 8 },
['End Stone'] = { pos = 3191, section = 8 },
['End Stone Brick Slab'] = { pos = 2418, section = 12 },
['End Stone Brick Stairs'] = { pos = 2419, section = 12 },
['End Stone Brick Wall'] = { pos = 2401, section = 12 },
['End Stone Brick Wall BE'] = { pos = 24, section = 12 },
['End Stone Bricks'] = { pos = 3261, section = 12 },
['Ender Chest'] = { pos = 3606, section = 26 },
['Ender Chest BE'] = { pos = 2372, section = 26 },
['Ender Dragon Spawn Egg'] = { pos = 695, section = 24 },
['Ender Pearl'] = { pos = 3510, section = 23 },
['Enderman Spawn Egg'] = { pos = 1148, section = 24 },
['Enderman Spawn Egg Revision 1'] = { pos = 1387, section = 39 },
['Endermite Spawn Egg'] = { pos = 1149, section = 24 },
Erbium = { pos = 1803, section = 34 },
['Etho Slab'] = { pos = 2117, section = 32 },
Europium = { pos = 1804, section = 34 },
['Evoker Spawn Egg'] = { pos = 1411, section = 24 },
['Explorer Pottery Sherd'] = { pos = 1225, section = 44 },
['Exposed Copper'] = { pos = 411, section = 12 },
['Exposed Copper Block'] = { pos = 411, section = 12 },
['Exposed Cut Copper'] = { pos = 412, section = 12 },
['Exposed Cut Copper Block'] = { pos = 412, section = 12 },
['Exposed Cut Copper Slab'] = { pos = 413, section = 12 },
['Exposed Cut Copper Stairs'] = { pos = 414, section = 12 },
['Eye Armor Trim'] = { pos = 800, section = 41 },
['Eye Armor Trim Smithing Template'] = { pos = 800, section = 41 },
['Eye Drops'] = { pos = 1752, section = 33 },
['Eye of Ender'] = { pos = 3565, section = 25 },
['Fancy Feather'] = { pos = 384, section = 38 },
Farmland = { pos = 886, section = 12 },
Feather = { pos = 3511, section = 23 },
['Fermented Spider Eye'] = { pos = 3139, section = 3 },
Fermium = { pos = 1805, section = 34 },
Fern = { pos = 3419, section = 19 },
Ferrum = { pos = 1806, section = 34 },
['Filled Bundle'] = { pos = 429, section = 25 },
['Finished Nether Reactor Core'] = { pos = 1601, section = 20 },
['Finished Nether Reactor Core Revision 1'] = { pos = 1598, section = 29 },
['Fire Charge'] = { pos = 3566, section = 25 },
['Fire Coral'] = { pos = 1714, section = 15 },
['Fire Coral Block'] = { pos = 1709, section = 15 },
['Fire Coral Block Revision 1'] = { pos = 1704, section = 29 },
['Fire Coral Fan'] = { pos = 1725, section = 15 },
['Fire Coral Fan Revision 1'] = { pos = 2139, section = 29 },
['Fire Coral Revision 1'] = { pos = 2140, section = 29 },
['Firefly Spawn Egg'] = { pos = 632, section = 24 },
['Firework Loaded Crossbow'] = { pos = 2387, section = 28 },
['Firework Rocket'] = { pos = 3192, section = 9 },
['Firework Star'] = { pos = 809, section = 9 },
['Fishing Rod'] = { pos = 3567, section = 25 },
Flask = { pos = 1906, section = 36 },
Flerovium = { pos = 1807, section = 34 },
['Fletching Table'] = { pos = 2453, section = 26 },
['Fletching Table Revision 1'] = { pos = 2444, section = 26 },
Flint = { pos = 3512, section = 23 },
['Flint and Steel'] = { pos = 3568, section = 25 },
['Float Tag'] = { pos = 1252, section = 32 },
['Flower Pot'] = { pos = 3151, section = 5 },
['Flowering Azalea'] = { pos = 467, section = 19 },
['Flowering Azalea Leaves'] = { pos = 468, section = 19 },
['Flowing Lava'] = { pos = 2129, section = 11 },
['Flowing Lava BE Revision 2'] = { pos = 2130, section = 29 },
['Flowing Water'] = { pos = 2127, section = 11 },
['Flowing Water BE'] = { pos = 2128, section = 11 },
['Flowing Water Revision 2'] = { pos = 851, section = 29 },
Fluorine = { pos = 1808, section = 34 },
Footprint = { pos = 266, section = 32 },
['Fox Spawn Egg'] = { pos = 2464, section = 24 },
Francium = { pos = 1809, section = 34 },
['Friend Pottery Sherd'] = { pos = 1226, section = 44 },
['Frog Spawn'] = { pos = 574, section = 5 },
['Frog Spawn Egg'] = { pos = 575, section = 24 },
Frogspawn = { pos = 574, section = 5 },
['Frosted Ice'] = { pos = 984, section = 15 },
Furnace = { pos = 3607, section = 26 },
Gadolinium = { pos = 1810, section = 34 },
Gallium = { pos = 1811, section = 34 },
Garbage = { pos = 1753, section = 33 },
Germanium = { pos = 1812, section = 34 },
['Ghast Spawn Egg'] = { pos = 1150, section = 24 },
['Ghast Spawn Egg Revision 1'] = { pos = 1388, section = 39 },
['Ghast Tear'] = { pos = 3140, section = 3 },
['Gilded Blackstone'] = { pos = 273, section = 16 },
Glass = { pos = 3263, section = 12 },
['Glass Bottle'] = { pos = 3569, section = 25 },
['Glass Pane'] = { pos = 3262, section = 12 },
['Glass Pane BE'] = { pos = 2025, section = 12 },
['Glistering Melon'] = { pos = 659, section = 3 },
['Glistering Melon Slice'] = { pos = 3141, section = 3 },
['Glow Berries'] = { pos = 460, section = 10 },
['Glow Ink Sac'] = { pos = 456, section = 23 },
['Glow Item Frame'] = { pos = 454, section = 5 },
['Glow Lichen'] = { pos = 455, section = 19 },
['Glow Squid Spawn Egg'] = { pos = 457, section = 24 },
['Glowing Obsidian'] = { pos = 1080, section = 20 },
Glowstone = { pos = 3382, section = 16 },
['Glowstone BE'] = { pos = 210, section = 16 },
['Glowstone Dust'] = { pos = 3513, section = 23 },
Glue = { pos = 1750, section = 33 },
['Goat Horn'] = { pos = 390, section = 25 },
['Goat Spawn Egg'] = { pos = 392, section = 24 },
Gold = { pos = 1779, section = 34 },
['Gold Heart'] = { pos = 119, section = 32 },
['Gold Ingot'] = { pos = 3514, section = 23 },
['Gold Nugget'] = { pos = 3515, section = 23 },
['Gold Ore'] = { pos = 3394, section = 18 },
['Gold Trim Chainmail Boots'] = { pos = 973, section = 43 },
['Gold Trim Chainmail Chestplate'] = { pos = 975, section = 43 },
['Gold Trim Chainmail Helmet'] = { pos = 976, section = 43 },
['Gold Trim Chainmail Leggings'] = { pos = 977, section = 43 },
['Gold Trim Diamond Boots'] = { pos = 978, section = 43 },
['Gold Trim Diamond Chestplate'] = { pos = 980, section = 43 },
['Gold Trim Diamond Helmet'] = { pos = 982, section = 43 },
['Gold Trim Diamond Leggings'] = { pos = 983, section = 43 },
['Gold Trim Golden Boots'] = { pos = 987, section = 43 },
['Gold Trim Golden Chestplate'] = { pos = 988, section = 43 },
['Gold Trim Golden Helmet'] = { pos = 989, section = 43 },
['Gold Trim Golden Leggings'] = { pos = 990, section = 43 },
['Gold Trim Iron Boots'] = { pos = 991, section = 43 },
['Gold Trim Iron Chestplate'] = { pos = 992, section = 43 },
['Gold Trim Iron Helmet'] = { pos = 993, section = 43 },
['Gold Trim Iron Leggings'] = { pos = 994, section = 43 },
['Gold Trim Leather Boots'] = { pos = 995, section = 43 },
['Gold Trim Leather Cap'] = { pos = 996, section = 43 },
['Gold Trim Leather Pants'] = { pos = 997, section = 43 },
['Gold Trim Leather Tunic'] = { pos = 998, section = 43 },
['Gold Trim Netherite Boots'] = { pos = 1001, section = 43 },
['Gold Trim Netherite Chestplate'] = { pos = 1002, section = 43 },
['Gold Trim Netherite Helmet'] = { pos = 1004, section = 43 },
['Gold Trim Netherite Leggings'] = { pos = 1005, section = 43 },
['Gold Trim Turtle Shell'] = { pos = 1006, section = 43 },
['Golden Apple'] = { pos = 3206, section = 10 },
['Golden Axe'] = { pos = 3570, section = 25 },
['Golden Boots'] = { pos = 2505, section = 1 },
['Golden Carrot'] = { pos = 3142, section = 3 },
['Golden Chestplate'] = { pos = 2506, section = 1 },
['Golden Helmet'] = { pos = 2507, section = 1 },
['Golden Hoe'] = { pos = 3571, section = 25 },
['Golden Horse Armor'] = { pos = 34, section = 1 },
['Golden Leggings'] = { pos = 2508, section = 1 },
['Golden Pickaxe'] = { pos = 3572, section = 25 },
['Golden Shovel'] = { pos = 3573, section = 25 },
['Golden Sword'] = { pos = 3636, section = 28 },
Granite = { pos = 3364, section = 15 },
['Granite Slab'] = { pos = 2420, section = 12 },
['Granite Stairs'] = { pos = 2421, section = 12 },
['Granite Wall'] = { pos = 2402, section = 12 },
['Granite Wall BE'] = { pos = 25, section = 12 },
Grass = { pos = 3420, section = 19 },
['Grass Block'] = { pos = 981, section = 15 },
['Grass Block Revision 1'] = { pos = 2312, section = 29 },
['Grass Block Revision 2'] = { pos = 2359, section = 29 },
['Grass Path'] = { pos = 1348, section = 15 },
Gravel = { pos = 3365, section = 15 },
['Gray Balloon'] = { pos = 1934, section = 33 },
['Gray Banner'] = { pos = 728, section = 7 },
['Gray Banner 15w14a'] = { pos = 476, section = 32 },
['Gray Base Banner'] = { pos = 2682, section = 2 },
['Gray Base Dexter Canton Banner'] = { pos = 2683, section = 2 },
['Gray Base Gradient Banner'] = { pos = 2684, section = 2 },
['Gray Base Indented Banner'] = { pos = 2685, section = 2 },
['Gray Base Sinister Canton Banner'] = { pos = 2686, section = 2 },
['Gray Bed'] = { pos = 3175, section = 7 },
['Gray Bed BE'] = { pos = 1549, section = 7 },
['Gray Bed LCE'] = { pos = 1549, section = 7 },
['Gray Bend Banner'] = { pos = 2687, section = 2 },
['Gray Bend Sinister Banner'] = { pos = 2688, section = 2 },
['Gray Bordure Banner'] = { pos = 2689, section = 2 },
['Gray Bordure Indented Banner'] = { pos = 2690, section = 2 },
['Gray Candle'] = { pos = 406, section = 7 },
['Gray Carpet'] = { pos = 1625, section = 7 },
['Gray Carpet Revision 1'] = { pos = 729, section = 40 },
['Gray Chevron Banner'] = { pos = 2691, section = 2 },
['Gray Chief Banner'] = { pos = 2692, section = 2 },
['Gray Chief Dexter Canton Banner'] = { pos = 2693, section = 2 },
['Gray Chief Indented Banner'] = { pos = 2694, section = 2 },
['Gray Chief Sinister Canton Banner'] = { pos = 2695, section = 2 },
['Gray Concrete'] = { pos = 1487, section = 7 },
['Gray Concrete Powder'] = { pos = 1488, section = 7 },
['Gray Creeper Charge Banner'] = { pos = 2696, section = 2 },
['Gray Cross Banner'] = { pos = 2697, section = 2 },
['Gray Dye'] = { pos = 3158, section = 6 },
['Gray Fess Banner'] = { pos = 2698, section = 2 },
['Gray Field Masoned Banner'] = { pos = 2699, section = 2 },
['Gray Firework Star'] = { pos = 810, section = 9 },
['Gray Flower Charge Banner'] = { pos = 2700, section = 2 },
['Gray Glazed Terracotta'] = { pos = 1489, section = 7 },
['Gray Globe Banner'] = { pos = 40, section = 2 },
['Gray Glow Stick'] = { pos = 1980, section = 33 },
['Gray Gradient Banner'] = { pos = 2701, section = 2 },
['Gray Inverted Chevron Banner'] = { pos = 2702, section = 2 },
['Gray Lozenge Banner'] = { pos = 2703, section = 2 },
['Gray Pale Banner'] = { pos = 2704, section = 2 },
['Gray Pale Dexter Banner'] = { pos = 2705, section = 2 },
['Gray Pale Sinister Banner'] = { pos = 2706, section = 2 },
['Gray Paly Banner'] = { pos = 2707, section = 2 },
['Gray Per Bend Banner'] = { pos = 2708, section = 2 },
['Gray Per Bend Inverted Banner'] = { pos = 2709, section = 2 },
['Gray Per Bend Sinister Banner'] = { pos = 2710, section = 2 },
['Gray Per Bend Sinister Inverted Banner'] = { pos = 2711, section = 2 },
['Gray Per Fess Banner'] = { pos = 2712, section = 2 },
['Gray Per Fess Inverted Banner'] = { pos = 2713, section = 2 },
['Gray Per Pale Banner'] = { pos = 2714, section = 2 },
['Gray Per Pale Inverted Banner'] = { pos = 2715, section = 2 },
['Gray Piglin Banner'] = { pos = 363, section = 2 },
['Gray Roundel Banner'] = { pos = 2716, section = 2 },
['Gray Saltire Banner'] = { pos = 2717, section = 2 },
['Gray Shield'] = { pos = 2509, section = 1 },
['Gray Shulker Box'] = { pos = 1607, section = 7 },
['Gray Shulker Box Revision 1'] = { pos = 1420, section = 40 },
['Gray Skull Charge Banner'] = { pos = 2718, section = 2 },
['Gray Snout Banner'] = { pos = 363, section = 2 },
['Gray Stained Glass'] = { pos = 731, section = 7 },
['Gray Stained Glass Pane'] = { pos = 732, section = 7 },
['Gray Stained Glass Pane BE'] = { pos = 2012, section = 7 },
['Gray Terracotta'] = { pos = 730, section = 7 },
['Gray Thing Banner'] = { pos = 2719, section = 2 },
['Gray Tinted Glass'] = { pos = 1299, section = 40 },
['Gray Tinted Glass Pane'] = { pos = 7, section = 40 },
['Gray Wood Planks'] = { pos = 248, section = 30 },
['Gray Wool'] = { pos = 1527, section = 7 },
['Gray Wool Revision 2'] = { pos = 733, section = 40 },
['Green Balloon'] = { pos = 1935, section = 33 },
['Green Banner'] = { pos = 734, section = 7 },
['Green Banner 15w14a'] = { pos = 477, section = 32 },
['Green Base Banner'] = { pos = 2720, section = 2 },
['Green Base Dexter Canton Banner'] = { pos = 2721, section = 2 },
['Green Base Gradient Banner'] = { pos = 2722, section = 2 },
['Green Base Indented Banner'] = { pos = 2723, section = 2 },
['Green Base Sinister Canton Banner'] = { pos = 2724, section = 2 },
['Green Beaker'] = { pos = 1895, section = 35 },
['Green Bed'] = { pos = 3176, section = 7 },
['Green Bed BE'] = { pos = 1550, section = 7 },
['Green Bed LCE'] = { pos = 1550, section = 7 },
['Green Bend Banner'] = { pos = 2725, section = 2 },
['Green Bend Sinister Banner'] = { pos = 2726, section = 2 },
['Green Bordure Banner'] = { pos = 2727, section = 2 },
['Green Bordure Indented Banner'] = { pos = 2728, section = 2 },
['Green Candle'] = { pos = 407, section = 7 },
['Green Carpet'] = { pos = 1626, section = 7 },
['Green Carpet Revision 1'] = { pos = 735, section = 40 },
['Green Chevron Banner'] = { pos = 2729, section = 2 },
['Green Chief Banner'] = { pos = 2730, section = 2 },
['Green Chief Dexter Canton Banner'] = { pos = 2731, section = 2 },
['Green Chief Indented Banner'] = { pos = 2732, section = 2 },
['Green Chief Sinister Canton Banner'] = { pos = 2733, section = 2 },
['Green Cloth'] = { pos = 231, section = 40 },
['Green Concrete'] = { pos = 1490, section = 7 },
['Green Concrete Powder'] = { pos = 1491, section = 7 },
['Green Creeper Charge Banner'] = { pos = 2734, section = 2 },
['Green Cross Banner'] = { pos = 2735, section = 2 },
['Green Dye'] = { pos = 3159, section = 6 },
['Green Fess Banner'] = { pos = 2736, section = 2 },
['Green Field Masoned Banner'] = { pos = 2737, section = 2 },
['Green Firework Star'] = { pos = 811, section = 9 },
['Green Flask'] = { pos = 1908, section = 36 },
['Green Flower Charge Banner'] = { pos = 2738, section = 2 },
['Green Glazed Terracotta'] = { pos = 1492, section = 7 },
['Green Globe Banner'] = { pos = 41, section = 2 },
['Green Glow Stick'] = { pos = 1981, section = 33 },
['Green Gradient Banner'] = { pos = 2739, section = 2 },
['Green Inverted Chevron Banner'] = { pos = 2740, section = 2 },
['Green Jar'] = { pos = 1920, section = 37 },
['Green Lozenge Banner'] = { pos = 2741, section = 2 },
['Green Pale Banner'] = { pos = 2742, section = 2 },
['Green Pale Dexter Banner'] = { pos = 2743, section = 2 },
['Green Pale Sinister Banner'] = { pos = 2744, section = 2 },
['Green Paly Banner'] = { pos = 2745, section = 2 },
['Green Per Bend Banner'] = { pos = 2746, section = 2 },
['Green Per Bend Inverted Banner'] = { pos = 2747, section = 2 },
['Green Per Bend Sinister Banner'] = { pos = 2748, section = 2 },
['Green Per Bend Sinister Inverted Banner'] = { pos = 2749, section = 2 },
['Green Per Fess Banner'] = { pos = 2750, section = 2 },
['Green Per Fess Inverted Banner'] = { pos = 2751, section = 2 },
['Green Per Pale Banner'] = { pos = 2752, section = 2 },
['Green Per Pale Inverted Banner'] = { pos = 2753, section = 2 },
['Green Piglin Banner'] = { pos = 364, section = 2 },
['Green Roundel Banner'] = { pos = 2754, section = 2 },
['Green Saltire Banner'] = { pos = 2755, section = 2 },
['Green Shield'] = { pos = 2510, section = 1 },
['Green Shulker Box'] = { pos = 1608, section = 7 },
['Green Shulker Box Revision 1'] = { pos = 1421, section = 40 },
['Green Skull Charge Banner'] = { pos = 2756, section = 2 },
['Green Snout Banner'] = { pos = 364, section = 2 },
['Green Sparkler'] = { pos = 1754, section = 33 },
['Green Sparkler (active)'] = { pos = 1755, section = 33 },
['Green Stained Glass'] = { pos = 737, section = 7 },
['Green Stained Glass Pane'] = { pos = 738, section = 7 },
['Green Stained Glass Pane BE'] = { pos = 2013, section = 7 },
['Green Terracotta'] = { pos = 736, section = 7 },
['Green Thing Banner'] = { pos = 2757, section = 2 },
['Green Tinted Glass'] = { pos = 1300, section = 40 },
['Green Tinted Glass Pane'] = { pos = 8, section = 40 },
['Green Torch'] = { pos = 1756, section = 33 },
['Green Wood Planks'] = { pos = 249, section = 30 },
['Green Wool'] = { pos = 1528, section = 7 },
['Green Wool Revision 2'] = { pos = 739, section = 40 },
Grindstone = { pos = 2461, section = 26 },
['Grindstone Revision 1'] = { pos = 2445, section = 26 },
['Guardian Spawn Egg'] = { pos = 1151, section = 24 },
Gunpowder = { pos = 3516, section = 23 },
Hafnium = { pos = 1813, section = 34 },
['Half Filled Bundle'] = { pos = 430, section = 25 },
Halogen = { pos = 69, section = 34 },
['Hanging Roots'] = { pos = 469, section = 19 },
['Hardened Black Stained Glass'] = { pos = 1950, section = 33 },
['Hardened Black Stained Glass Pane'] = { pos = 1982, section = 33 },
['Hardened Blue Stained Glass'] = { pos = 1951, section = 33 },
['Hardened Blue Stained Glass Pane'] = { pos = 1983, section = 33 },
['Hardened Brown Stained Glass'] = { pos = 1952, section = 33 },
['Hardened Brown Stained Glass Pane'] = { pos = 1984, section = 33 },
['Hardened Cyan Stained Glass'] = { pos = 1953, section = 33 },
['Hardened Cyan Stained Glass Pane'] = { pos = 1985, section = 33 },
['Hardened Glass'] = { pos = 1954, section = 33 },
['Hardened Glass Pane'] = { pos = 1986, section = 33 },
['Hardened Gray Stained Glass'] = { pos = 1955, section = 33 },
['Hardened Gray Stained Glass Pane'] = { pos = 1987, section = 33 },
['Hardened Green Stained Glass'] = { pos = 1956, section = 33 },
['Hardened Green Stained Glass Pane'] = { pos = 1988, section = 33 },
['Hardened Light Blue Stained Glass'] = { pos = 1957, section = 33 },
['Hardened Light Blue Stained Glass Pane'] = { pos = 1989, section = 33 },
['Hardened Light Gray Stained Glass'] = { pos = 1958, section = 33 },
['Hardened Light Gray Stained Glass Pane'] = { pos = 1990, section = 33 },
['Hardened Lime Stained Glass'] = { pos = 1959, section = 33 },
['Hardened Lime Stained Glass Pane'] = { pos = 1991, section = 33 },
['Hardened Magenta Stained Glass'] = { pos = 1960, section = 33 },
['Hardened Magenta Stained Glass Pane'] = { pos = 1992, section = 33 },
['Hardened Orange Stained Glass'] = { pos = 1961, section = 33 },
['Hardened Orange Stained Glass Pane'] = { pos = 1993, section = 33 },
['Hardened Pink Stained Glass'] = { pos = 1962, section = 33 },
['Hardened Pink Stained Glass Pane'] = { pos = 1994, section = 33 },
['Hardened Purple Stained Glass'] = { pos = 1963, section = 33 },
['Hardened Purple Stained Glass Pane'] = { pos = 1995, section = 33 },
['Hardened Red Stained Glass'] = { pos = 1964, section = 33 },
['Hardened Red Stained Glass Pane'] = { pos = 1996, section = 33 },
['Hardened White Stained Glass'] = { pos = 1965, section = 33 },
['Hardened White Stained Glass Pane'] = { pos = 1997, section = 33 },
['Hardened Yellow Stained Glass'] = { pos = 1966, section = 33 },
['Hardened Yellow Stained Glass Pane'] = { pos = 1998, section = 33 },
Hassium = { pos = 1814, section = 34 },
['Hay Bale'] = { pos = 3264, section = 12 },
Head = { pos = 966, section = 14 },
['Head BE'] = { pos = 217, section = 14 },
['Heart of the Sea'] = { pos = 1742, section = 23 },
['Heart of the Sea Revision 1'] = { pos = 1975, section = 29 },
['Heart Pottery Sherd'] = { pos = 1227, section = 44 },
['Heartbreak Pottery Sherd'] = { pos = 1228, section = 44 },
['Heavy Weighted Pressure Plate'] = { pos = 3335, section = 13 },
['Heavy Weighted Pressure Plate Revision 1'] = { pos = 2075, section = 29 },
Helium = { pos = 1815, section = 34 },
['Hoglin Spawn Egg'] = { pos = 194, section = 24 },
['Hoglin Spawn Egg Revision 1'] = { pos = 1169, section = 29 },
Holmium = { pos = 1816, section = 34 },
['Honey Block'] = { pos = 107, section = 12 },
['Honey Block BE'] = { pos = 98, section = 12 },
['Honey Block BE Revision 1'] = { pos = 101, section = 29 },
['Honey Block Revision 1'] = { pos = 98, section = 12 },
['Honey Bottle'] = { pos = 61, section = 10 },
['Honey Bottle BE'] = { pos = 102, section = 10 },
Honeycomb = { pos = 62, section = 23 },
['Honeycomb BE Revision 1'] = { pos = 103, section = 29 },
['Honeycomb Block'] = { pos = 99, section = 12 },
Hopper = { pos = 3608, section = 26 },
['Hopper Revision 2'] = { pos = 358, section = 29 },
Horn = { pos = 93, section = 38 },
['Horn Coral'] = { pos = 1715, section = 15 },
['Horn Coral Block'] = { pos = 1710, section = 15 },
['Horn Coral Block BE'] = { pos = 1973, section = 15 },
['Horn Coral Block Revision 1'] = { pos = 1705, section = 29 },
['Horn Coral Fan'] = { pos = 2134, section = 15 },
['Horn Coral Fan Revision 1'] = { pos = 1726, section = 29 },
['Horn Coral Fan Revision 2'] = { pos = 2141, section = 29 },
['Horned Sheep Spawn Egg'] = { pos = 625, section = 38 },
['Horse Saddle'] = { pos = 2465, section = 30 },
['Horse Spawn Egg'] = { pos = 1152, section = 24 },
['Host Armor Trim'] = { pos = 1214, section = 41 },
['Host Armor Trim Smithing Template'] = { pos = 1214, section = 41 },
['Howl Pottery Sherd'] = { pos = 1229, section = 44 },
['Husk Spawn Egg'] = { pos = 1373, section = 24 },
['Husk Spawn Egg Revision 1'] = { pos = 1563, section = 39 },
Hydrargyrum = { pos = 1817, section = 34 },
Hydrogen = { pos = 1818, section = 34 },
['Hydrogen Peroxide'] = { pos = 1889, section = 35 },
Ice = { pos = 3366, section = 15 },
['Ice Bomb'] = { pos = 1757, section = 33 },
['Impulse Command Block Revision 1'] = { pos = 1240, section = 29 },
['Indigo Beaker'] = { pos = 1896, section = 35 },
['Indigo Flask'] = { pos = 1909, section = 36 },
['Indigo Jar'] = { pos = 1921, section = 37 },
Indium = { pos = 1819, section = 34 },
['Infested Chiseled Stone Bricks'] = { pos = 3357, section = 15 },
['Infested Cobblestone'] = { pos = 3359, section = 12 },
['Infested Cracked Stone Bricks'] = { pos = 3361, section = 15 },
['Infested Deepslate'] = { pos = 503, section = 15 },
['Infested Mossy Stone Bricks'] = { pos = 3368, section = 15 },
['Infested Stone'] = { pos = 1000, section = 15 },
['Infested Stone Bricks'] = { pos = 3380, section = 15 },
['Initialized Nether Reactor Core'] = { pos = 1600, section = 20 },
['Initialized Nether Reactor Core Revision 1'] = { pos = 1597, section = 29 },
['Ink Sac'] = { pos = 3160, section = 6 },
['Int Tag'] = { pos = 1254, section = 32 },
['Inverted Daylight Detector'] = { pos = 1249, section = 26 },
['Inverted Daylight Sensor'] = { pos = 1249, section = 26 },
['Invisible Bedrock'] = { pos = 2151, section = 26 },
Iodine = { pos = 1820, section = 34 },
Iridium = { pos = 1821, section = 34 },
Iron = { pos = 1806, section = 34 },
['Iron Axe'] = { pos = 3574, section = 25 },
['Iron Bars'] = { pos = 3265, section = 12 },
['Iron Bars BE'] = { pos = 2026, section = 12 },
['Iron Boots'] = { pos = 2511, section = 1 },
['Iron Chestplate'] = { pos = 2512, section = 1 },
['Iron Door'] = { pos = 569, section = 13 },
['Iron Door Revision 2'] = { pos = 941, section = 13 },
['Iron Golem Spawn Egg'] = { pos = 696, section = 24 },
['Iron Heart'] = { pos = 120, section = 32 },
['Iron Helmet'] = { pos = 2513, section = 1 },
['Iron Hoe'] = { pos = 3575, section = 25 },
['Iron Horse Armor'] = { pos = 39, section = 1 },
['Iron Ingot'] = { pos = 3517, section = 23 },
['Iron Leggings'] = { pos = 2514, section = 1 },
['Iron Nugget'] = { pos = 3518, section = 23 },
['Iron Ore'] = { pos = 3395, section = 18 },
['Iron Pickaxe'] = { pos = 3576, section = 25 },
['Iron Shovel'] = { pos = 3577, section = 25 },
['Iron Sulfide'] = { pos = 1916, section = 37 },
['Iron Sword'] = { pos = 3637, section = 28 },
['Iron Trapdoor'] = { pos = 942, section = 13 },
['Iron Trim Chainmail Boots'] = { pos = 1008, section = 43 },
['Iron Trim Chainmail Chestplate'] = { pos = 1009, section = 43 },
['Iron Trim Chainmail Helmet'] = { pos = 1012, section = 43 },
['Iron Trim Chainmail Leggings'] = { pos = 1013, section = 43 },
['Iron Trim Diamond Boots'] = { pos = 1014, section = 43 },
['Iron Trim Diamond Chestplate'] = { pos = 1015, section = 43 },
['Iron Trim Diamond Helmet'] = { pos = 1016, section = 43 },
['Iron Trim Diamond Leggings'] = { pos = 1017, section = 43 },
['Iron Trim Golden Boots'] = { pos = 1018, section = 43 },
['Iron Trim Golden Chestplate'] = { pos = 1019, section = 43 },
['Iron Trim Golden Helmet'] = { pos = 1020, section = 43 },
['Iron Trim Golden Leggings'] = { pos = 1021, section = 43 },
['Iron Trim Iron Boots'] = { pos = 1022, section = 43 },
['Iron Trim Iron Chestplate'] = { pos = 1023, section = 43 },
['Iron Trim Iron Helmet'] = { pos = 1024, section = 43 },
['Iron Trim Iron Leggings'] = { pos = 1025, section = 43 },
['Iron Trim Leather Boots'] = { pos = 1026, section = 43 },
['Iron Trim Leather Cap'] = { pos = 1027, section = 43 },
['Iron Trim Leather Pants'] = { pos = 1028, section = 43 },
['Iron Trim Leather Tunic'] = { pos = 1029, section = 43 },
['Iron Trim Netherite Boots'] = { pos = 1030, section = 43 },
['Iron Trim Netherite Chestplate'] = { pos = 1031, section = 43 },
['Iron Trim Netherite Helmet'] = { pos = 1032, section = 43 },
['Iron Trim Netherite Leggings'] = { pos = 1033, section = 43 },
['Iron Trim Turtle Shell'] = { pos = 1034, section = 43 },
['Item Frame'] = { pos = 3152, section = 5 },
["Jack o'Lantern"] = { pos = 3266, section = 12 },
["Jack o'Lantern BE"] = { pos = 221, section = 12 },
Jar = { pos = 1922, section = 37 },
Jigsaw = { pos = 291, section = 26 },
['Jigsaw BE'] = { pos = 291, section = 26 },
['Jigsaw Block'] = { pos = 291, section = 26 },
['Jigsaw Block BE'] = { pos = 291, section = 26 },
['Jigsaw Block Revision 1'] = { pos = 2450, section = 29 },
['Jigsaw Block Revision 2'] = { pos = 2458, section = 29 },
['Jigsaw Revision 1'] = { pos = 2450, section = 29 },
['Jigsaw Revision 2'] = { pos = 2458, section = 29 },
Jukebox = { pos = 3609, section = 26 },
['Jumbo Rabbit Spawn Egg'] = { pos = 626, section = 38 },
['Jungle Boat'] = { pos = 636, section = 27 },
['Jungle Boat Revision 2'] = { pos = 3621, section = 29 },
['Jungle Boat with Chest'] = { pos = 615, section = 27 },
['Jungle Button'] = { pos = 3336, section = 13 },
['Jungle Door'] = { pos = 570, section = 13 },
['Jungle Door Revision 3'] = { pos = 551, section = 29 },
['Jungle Explorer Map'] = { pos = 1326, section = 25 },
['Jungle Explorer Map BE'] = { pos = 1327, section = 25 },
['Jungle Fence'] = { pos = 644, section = 12 },
['Jungle Fence BE'] = { pos = 3268, section = 12 },
['Jungle Fence Gate'] = { pos = 3267, section = 13 },
['Jungle Fence Gate BE'] = { pos = 55, section = 13 },
['Jungle Hanging Sign'] = { pos = 656, section = 5 },
['Jungle Leaves'] = { pos = 3421, section = 19 },
['Jungle Leaves BE'] = { pos = 112, section = 19 },
['Jungle Log'] = { pos = 3422, section = 19 },
['Jungle Log Revision 1'] = { pos = 2240, section = 29 },
['Jungle Planks'] = { pos = 896, section = 12 },
['Jungle Pressure Plate'] = { pos = 3337, section = 13 },
['Jungle Sapling'] = { pos = 3423, section = 19 },
['Jungle Sign'] = { pos = 2395, section = 17 },
['Jungle Slab'] = { pos = 3269, section = 12 },
['Jungle Stairs'] = { pos = 3270, section = 12 },
['Jungle Stairs Left'] = { pos = 2259, section = 42 },
['Jungle Trapdoor'] = { pos = 1649, section = 13 },
['Jungle Wood'] = { pos = 3271, section = 12 },
['Jungle Wood Button'] = { pos = 3336, section = 13 },
['Jungle Wood Door'] = { pos = 570, section = 13 },
['Jungle Wood Fence'] = { pos = 644, section = 12 },
['Jungle Wood Fence Gate'] = { pos = 3267, section = 13 },
['Jungle Wood Planks'] = { pos = 896, section = 12 },
['Jungle Wood Pressure Plate'] = { pos = 3337, section = 13 },
['Jungle Wood Sign'] = { pos = 2395, section = 17 },
['Jungle Wood Slab'] = { pos = 3269, section = 12 },
['Jungle Wood Stairs'] = { pos = 3270, section = 12 },
['Jungle Wood Trapdoor'] = { pos = 1649, section = 13 },
Kalium = { pos = 1822, section = 34 },
Kelp = { pos = 1683, section = 19 },
['Kelp Revision 1'] = { pos = 1976, section = 29 },
['Knowledge Book'] = { pos = 3610, section = 26 },
Krypton = { pos = 1823, section = 34 },
['La Baguette'] = { pos = 1318, section = 32 },
['Lab Table'] = { pos = 1936, section = 33 },
Ladder = { pos = 3272, section = 12 },
Lantern = { pos = 2451, section = 26 },
Lanthanide = { pos = 70, section = 34 },
Lanthanum = { pos = 1824, section = 34 },
['Lapis Lazuli'] = { pos = 3161, section = 6 },
['Lapis Lazuli Block'] = { pos = 3273, section = 12 },
['Lapis Lazuli Block Revision 1'] = { pos = 2241, section = 29 },
['Lapis Lazuli Ore'] = { pos = 3396, section = 18 },
['Lapis Trim Chainmail Boots'] = { pos = 1035, section = 43 },
['Lapis Trim Chainmail Chestplate'] = { pos = 1036, section = 43 },
['Lapis Trim Chainmail Helmet'] = { pos = 1037, section = 43 },
['Lapis Trim Chainmail Leggings'] = { pos = 1038, section = 43 },
['Lapis Trim Diamond Boots'] = { pos = 1040, section = 43 },
['Lapis Trim Diamond Chestplate'] = { pos = 1041, section = 43 },
['Lapis Trim Diamond Helmet'] = { pos = 1042, section = 43 },
['Lapis Trim Diamond Leggings'] = { pos = 1043, section = 43 },
['Lapis Trim Golden Boots'] = { pos = 1044, section = 43 },
['Lapis Trim Golden Chestplate'] = { pos = 1045, section = 43 },
['Lapis Trim Golden Helmet'] = { pos = 1046, section = 43 },
['Lapis Trim Golden Leggings'] = { pos = 1047, section = 43 },
['Lapis Trim Iron Boots'] = { pos = 1048, section = 43 },
['Lapis Trim Iron Chestplate'] = { pos = 1049, section = 43 },
['Lapis Trim Iron Helmet'] = { pos = 1051, section = 43 },
['Lapis Trim Iron Leggings'] = { pos = 1052, section = 43 },
['Lapis Trim Leather Boots'] = { pos = 1053, section = 43 },
['Lapis Trim Leather Cap'] = { pos = 1054, section = 43 },
['Lapis Trim Leather Pants'] = { pos = 1055, section = 43 },
['Lapis Trim Leather Tunic'] = { pos = 1056, section = 43 },
['Lapis Trim Netherite Boots'] = { pos = 1057, section = 43 },
['Lapis Trim Netherite Chestplate'] = { pos = 1058, section = 43 },
['Lapis Trim Netherite Helmet'] = { pos = 1059, section = 43 },
['Lapis Trim Netherite Leggings'] = { pos = 1060, section = 43 },
['Lapis Trim Turtle Shell'] = { pos = 1062, section = 43 },
['Large Amethyst Bud'] = { pos = 408, section = 15 },
['Large Fern'] = { pos = 3424, section = 19 },
Latex = { pos = 1897, section = 35 },
Lava = { pos = 2129, section = 11 },
['Lava BE Revision 2'] = { pos = 2130, section = 29 },
['Lava Block'] = { pos = 2119, section = 29 },
['Lava Bucket'] = { pos = 3147, section = 4 },
Lawrencium = { pos = 1825, section = 34 },
['Le Tricolore'] = { pos = 1319, section = 32 },
Lead = { pos = 3578, section = 25 },
['Lead (element)'] = { pos = 1826, section = 34 },
Leather = { pos = 3519, section = 23 },
['Leather Boots'] = { pos = 2515, section = 1 },
['Leather Boots Revision 1'] = { pos = 2076, section = 29 },
['Leather Boots Revision 2'] = { pos = 2077, section = 29 },
['Leather Cap'] = { pos = 2516, section = 1 },
['Leather Cap Revision 1'] = { pos = 2078, section = 29 },
['Leather Cap Revision 2'] = { pos = 2079, section = 29 },
['Leather Horse Armor'] = { pos = 1382, section = 1 },
['Leather Horse Armor BE'] = { pos = 378, section = 1 },
['Leather Pants'] = { pos = 2517, section = 1 },
['Leather Pants Revision 1'] = { pos = 2080, section = 29 },
['Leather Pants Revision 2'] = { pos = 2081, section = 29 },
['Leather Tunic'] = { pos = 2518, section = 1 },
['Leather Tunic Revision 1'] = { pos = 2082, section = 29 },
['Leather Tunic Revision 2'] = { pos = 2083, section = 29 },
Lectern = { pos = 19, section = 13 },
['Lectern Revision 1'] = { pos = 2434, section = 29 },
['Left Curly'] = { pos = 1255, section = 32 },
['Left Square'] = { pos = 1256, section = 32 },
Lever = { pos = 3338, section = 13 },
['Light 0'] = { pos = 525, section = 26 },
['Light 1'] = { pos = 526, section = 26 },
['Light 10'] = { pos = 527, section = 26 },
['Light 11'] = { pos = 528, section = 26 },
['Light 12'] = { pos = 529, section = 26 },
['Light 13'] = { pos = 530, section = 26 },
['Light 14'] = { pos = 531, section = 26 },
['Light 15'] = { pos = 532, section = 26 },
['Light 2'] = { pos = 533, section = 26 },
['Light 3'] = { pos = 534, section = 26 },
['Light 4'] = { pos = 535, section = 26 },
['Light 5'] = { pos = 536, section = 26 },
['Light 6'] = { pos = 537, section = 26 },
['Light 7'] = { pos = 538, section = 26 },
['Light 8'] = { pos = 539, section = 26 },
['Light 9'] = { pos = 540, section = 26 },
['Light Block 0'] = { pos = 76, section = 26 },
['Light Block 1'] = { pos = 77, section = 26 },
['Light Block 10'] = { pos = 78, section = 26 },
['Light Block 11'] = { pos = 79, section = 26 },
['Light Block 12'] = { pos = 80, section = 26 },
['Light Block 13'] = { pos = 81, section = 26 },
['Light Block 14'] = { pos = 82, section = 26 },
['Light Block 15'] = { pos = 83, section = 26 },
['Light Block 2'] = { pos = 84, section = 26 },
['Light Block 3'] = { pos = 85, section = 26 },
['Light Block 4'] = { pos = 86, section = 26 },
['Light Block 5'] = { pos = 87, section = 26 },
['Light Block 6'] = { pos = 88, section = 26 },
['Light Block 7'] = { pos = 89, section = 26 },
['Light Block 8'] = { pos = 90, section = 26 },
['Light Block 9'] = { pos = 91, section = 26 },
['Light Blue Balloon'] = { pos = 1937, section = 33 },
['Light Blue Banner'] = { pos = 740, section = 7 },
['Light Blue Banner 15w14a'] = { pos = 478, section = 32 },
['Light Blue Base Banner'] = { pos = 2758, section = 2 },
['Light Blue Base Dexter Canton Banner'] = { pos = 2759, section = 2 },
['Light Blue Base Gradient Banner'] = { pos = 2760, section = 2 },
['Light Blue Base Indented Banner'] = { pos = 2761, section = 2 },
['Light Blue Base Sinister Canton Banner'] = { pos = 2762, section = 2 },
['Light Blue Bed'] = { pos = 3177, section = 7 },
['Light Blue Bed BE'] = { pos = 1551, section = 7 },
['Light Blue Bed LCE'] = { pos = 1551, section = 7 },
['Light Blue Bend Banner'] = { pos = 2763, section = 2 },
['Light Blue Bend Sinister Banner'] = { pos = 2764, section = 2 },
['Light Blue Bordure Banner'] = { pos = 2765, section = 2 },
['Light Blue Bordure Indented Banner'] = { pos = 2766, section = 2 },
['Light Blue Candle'] = { pos = 409, section = 7 },
['Light Blue Carpet'] = { pos = 1627, section = 7 },
['Light Blue Carpet Revision 1'] = { pos = 741, section = 40 },
['Light Blue Chevron Banner'] = { pos = 2767, section = 2 },
['Light Blue Chief Banner'] = { pos = 2768, section = 2 },
['Light Blue Chief Dexter Canton Banner'] = { pos = 2769, section = 2 },
['Light Blue Chief Indented Banner'] = { pos = 2770, section = 2 },
['Light Blue Chief Sinister Canton Banner'] = { pos = 2771, section = 2 },
['Light Blue Concrete'] = { pos = 1493, section = 7 },
['Light Blue Concrete Powder'] = { pos = 1494, section = 7 },
['Light Blue Creeper Charge Banner'] = { pos = 2772, section = 2 },
['Light Blue Cross Banner'] = { pos = 2773, section = 2 },
['Light Blue Dye'] = { pos = 3162, section = 6 },
['Light Blue Fess Banner'] = { pos = 2774, section = 2 },
['Light Blue Field Masoned Banner'] = { pos = 2775, section = 2 },
['Light Blue Firework Star'] = { pos = 812, section = 9 },
['Light Blue Flower Charge Banner'] = { pos = 2776, section = 2 },
['Light Blue Glazed Terracotta'] = { pos = 1495, section = 7 },
['Light Blue Globe Banner'] = { pos = 42, section = 2 },
['Light Blue Glow Stick'] = { pos = 1999, section = 33 },
['Light Blue Gradient Banner'] = { pos = 2777, section = 2 },
['Light Blue Inverted Chevron Banner'] = { pos = 2778, section = 2 },
['Light Blue Lozenge Banner'] = { pos = 2779, section = 2 },
['Light Blue Pale Banner'] = { pos = 2780, section = 2 },
['Light Blue Pale Dexter Banner'] = { pos = 2781, section = 2 },
['Light Blue Pale Sinister Banner'] = { pos = 2782, section = 2 },
['Light Blue Paly Banner'] = { pos = 2783, section = 2 },
['Light Blue Per Bend Banner'] = { pos = 2784, section = 2 },
['Light Blue Per Bend Inverted Banner'] = { pos = 2785, section = 2 },
['Light Blue Per Bend Sinister Banner'] = { pos = 2786, section = 2 },
['Light Blue Per Bend Sinister Inverted Banner'] = { pos = 2787, section = 2 },
['Light Blue Per Fess Banner'] = { pos = 2788, section = 2 },
['Light Blue Per Fess Inverted Banner'] = { pos = 2789, section = 2 },
['Light Blue Per Pale Banner'] = { pos = 2790, section = 2 },
['Light Blue Per Pale Inverted Banner'] = { pos = 2791, section = 2 },
['Light Blue Piglin Banner'] = { pos = 365, section = 2 },
['Light Blue Roundel Banner'] = { pos = 2792, section = 2 },
['Light Blue Saltire Banner'] = { pos = 2793, section = 2 },
['Light Blue Shield'] = { pos = 2519, section = 1 },
['Light Blue Shulker Box'] = { pos = 1609, section = 7 },
['Light Blue Shulker Box Revision 1'] = { pos = 1422, section = 40 },
['Light Blue Skull Charge Banner'] = { pos = 2794, section = 2 },
['Light Blue Snout Banner'] = { pos = 365, section = 2 },
['Light Blue Stained Glass'] = { pos = 743, section = 7 },
['Light Blue Stained Glass Pane'] = { pos = 744, section = 7 },
['Light Blue Stained Glass Pane BE'] = { pos = 2014, section = 7 },
['Light Blue Terracotta'] = { pos = 742, section = 7 },
['Light Blue Thing Banner'] = { pos = 2795, section = 2 },
['Light Blue Tinted Glass'] = { pos = 1302, section = 40 },
['Light Blue Tinted Glass Pane'] = { pos = 9, section = 40 },
['Light Blue Wood Planks'] = { pos = 250, section = 30 },
['Light Blue Wool'] = { pos = 1529, section = 7 },
['Light Blue Wool Revision 2'] = { pos = 745, section = 40 },
['Light Gray Balloon'] = { pos = 1945, section = 33 },
['Light Gray Banner'] = { pos = 746, section = 7 },
['Light Gray Banner 15w14a'] = { pos = 479, section = 32 },
['Light Gray Base Banner'] = { pos = 2796, section = 2 },
['Light Gray Base Dexter Canton Banner'] = { pos = 2797, section = 2 },
['Light Gray Base Gradient Banner'] = { pos = 2798, section = 2 },
['Light Gray Base Indented Banner'] = { pos = 2799, section = 2 },
['Light Gray Base Sinister Canton Banner'] = { pos = 2800, section = 2 },
['Light Gray Beaker'] = { pos = 1898, section = 35 },
['Light Gray Bed'] = { pos = 3178, section = 7 },
['Light Gray Bed BE'] = { pos = 1552, section = 7 },
['Light Gray Bed LCE'] = { pos = 1552, section = 7 },
['Light Gray Bend Banner'] = { pos = 2801, section = 2 },
['Light Gray Bend Sinister Banner'] = { pos = 2802, section = 2 },
['Light Gray Bordure Banner'] = { pos = 2803, section = 2 },
['Light Gray Bordure Indented Banner'] = { pos = 2804, section = 2 },
['Light Gray Candle'] = { pos = 410, section = 7 },
['Light Gray Carpet'] = { pos = 1628, section = 7 },
['Light Gray Carpet Revision 1'] = { pos = 747, section = 40 },
['Light Gray Chevron Banner'] = { pos = 2805, section = 2 },
['Light Gray Chief Banner'] = { pos = 2806, section = 2 },
['Light Gray Chief Dexter Canton Banner'] = { pos = 2807, section = 2 },
['Light Gray Chief Indented Banner'] = { pos = 2808, section = 2 },
['Light Gray Chief Sinister Canton Banner'] = { pos = 2809, section = 2 },
['Light Gray Cloth'] = { pos = 233, section = 40 },
['Light Gray Concrete'] = { pos = 1496, section = 7 },
['Light Gray Concrete Powder'] = { pos = 1497, section = 7 },
['Light Gray Creeper Charge Banner'] = { pos = 2810, section = 2 },
['Light Gray Cross Banner'] = { pos = 2811, section = 2 },
['Light Gray Dye'] = { pos = 3163, section = 6 },
['Light Gray Fess Banner'] = { pos = 2812, section = 2 },
['Light Gray Field Masoned Banner'] = { pos = 2813, section = 2 },
['Light Gray Firework Star'] = { pos = 813, section = 9 },
['Light Gray Flask'] = { pos = 1910, section = 36 },
['Light Gray Flower Charge Banner'] = { pos = 2814, section = 2 },
['Light Gray Glazed Terracotta'] = { pos = 1498, section = 7 },
['Light Gray Globe Banner'] = { pos = 43, section = 2 },
['Light Gray Gradient Banner'] = { pos = 2815, section = 2 },
['Light Gray Inverted Chevron Banner'] = { pos = 2816, section = 2 },
['Light Gray Jar'] = { pos = 1923, section = 37 },
['Light Gray Lozenge Banner'] = { pos = 2817, section = 2 },
['Light Gray Pale Banner'] = { pos = 2818, section = 2 },
['Light Gray Pale Dexter Banner'] = { pos = 2819, section = 2 },
['Light Gray Pale Sinister Banner'] = { pos = 2820, section = 2 },
['Light Gray Paly Banner'] = { pos = 2821, section = 2 },
['Light Gray Per Bend Banner'] = { pos = 2822, section = 2 },
['Light Gray Per Bend Inverted Banner'] = { pos = 2823, section = 2 },
['Light Gray Per Bend Sinister Banner'] = { pos = 2824, section = 2 },
['Light Gray Per Bend Sinister Inverted Banner'] = { pos = 2825, section = 2 },
['Light Gray Per Fess Banner'] = { pos = 2826, section = 2 },
['Light Gray Per Fess Inverted Banner'] = { pos = 2827, section = 2 },
['Light Gray Per Pale Banner'] = { pos = 2828, section = 2 },
['Light Gray Per Pale Inverted Banner'] = { pos = 2829, section = 2 },
['Light Gray Piglin Banner'] = { pos = 366, section = 2 },
['Light Gray Roundel Banner'] = { pos = 2830, section = 2 },
['Light Gray Saltire Banner'] = { pos = 2831, section = 2 },
['Light Gray Shield'] = { pos = 2520, section = 1 },
['Light Gray Shulker Box'] = { pos = 1610, section = 7 },
['Light Gray Shulker Box Revision 1'] = { pos = 1423, section = 40 },
['Light Gray Skull Charge Banner'] = { pos = 2832, section = 2 },
['Light Gray Snout Banner'] = { pos = 366, section = 2 },
['Light Gray Stained Glass'] = { pos = 749, section = 7 },
['Light Gray Stained Glass Pane'] = { pos = 750, section = 7 },
['Light Gray Stained Glass Pane BE'] = { pos = 2015, section = 7 },
['Light Gray Terracotta'] = { pos = 748, section = 7 },
['Light Gray Thing Banner'] = { pos = 2833, section = 2 },
['Light Gray Tinted Glass'] = { pos = 1303, section = 40 },
['Light Gray Tinted Glass Pane'] = { pos = 10, section = 40 },
['Light Gray Wood Planks'] = { pos = 251, section = 30 },
['Light Gray Wool'] = { pos = 1530, section = 7 },
['Light Gray Wool Revision 2'] = { pos = 751, section = 40 },
['Light Negative'] = { pos = 541, section = 26 },
['Light Weighted Pressure Plate'] = { pos = 3339, section = 13 },
['Light Weighted Pressure Plate Revision 1'] = { pos = 2084, section = 29 },
['Lightning Rod'] = { pos = 415, section = 26 },
Lilac = { pos = 3425, section = 19 },
['Lily of the Valley'] = { pos = 2390, section = 19 },
['Lily Pad'] = { pos = 3426, section = 19 },
['Lime Balloon'] = { pos = 1938, section = 33 },
['Lime Banner'] = { pos = 752, section = 7 },
['Lime Banner 15w14a'] = { pos = 480, section = 32 },
['Lime Base Banner'] = { pos = 2834, section = 2 },
['Lime Base Dexter Canton Banner'] = { pos = 2835, section = 2 },
['Lime Base Gradient Banner'] = { pos = 2836, section = 2 },
['Lime Base Indented Banner'] = { pos = 2837, section = 2 },
['Lime Base Sinister Canton Banner'] = { pos = 2838, section = 2 },
['Lime Bed'] = { pos = 3179, section = 7 },
['Lime Bed BE'] = { pos = 1553, section = 7 },
['Lime Bed LCE'] = { pos = 1553, section = 7 },
['Lime Bend Banner'] = { pos = 2839, section = 2 },
['Lime Bend Sinister Banner'] = { pos = 2840, section = 2 },
['Lime Bordure Banner'] = { pos = 2841, section = 2 },
['Lime Bordure Indented Banner'] = { pos = 2842, section = 2 },
['Lime Candle'] = { pos = 416, section = 7 },
['Lime Carpet'] = { pos = 1629, section = 7 },
['Lime Carpet Revision 1'] = { pos = 753, section = 40 },
['Lime Chevron Banner'] = { pos = 2843, section = 2 },
['Lime Chief Banner'] = { pos = 2844, section = 2 },
['Lime Chief Dexter Canton Banner'] = { pos = 2845, section = 2 },
['Lime Chief Indented Banner'] = { pos = 2846, section = 2 },
['Lime Chief Sinister Canton Banner'] = { pos = 2847, section = 2 },
['Lime Concrete'] = { pos = 1499, section = 7 },
['Lime Concrete Powder'] = { pos = 1500, section = 7 },
['Lime Creeper Charge Banner'] = { pos = 2848, section = 2 },
['Lime Cross Banner'] = { pos = 2849, section = 2 },
['Lime Dye'] = { pos = 3164, section = 6 },
['Lime Fess Banner'] = { pos = 2850, section = 2 },
['Lime Field Masoned Banner'] = { pos = 2851, section = 2 },
['Lime Firework Star'] = { pos = 814, section = 9 },
['Lime Flower Charge Banner'] = { pos = 2852, section = 2 },
['Lime Glazed Terracotta'] = { pos = 1501, section = 7 },
['Lime Globe Banner'] = { pos = 44, section = 2 },
['Lime Glow Stick'] = { pos = 2000, section = 33 },
['Lime Gradient Banner'] = { pos = 2853, section = 2 },
['Lime Inverted Chevron Banner'] = { pos = 2854, section = 2 },
['Lime Lozenge Banner'] = { pos = 2855, section = 2 },
['Lime Pale Banner'] = { pos = 2856, section = 2 },
['Lime Pale Dexter Banner'] = { pos = 2857, section = 2 },
['Lime Pale Sinister Banner'] = { pos = 2858, section = 2 },
['Lime Paly Banner'] = { pos = 2859, section = 2 },
['Lime Per Bend Banner'] = { pos = 2860, section = 2 },
['Lime Per Bend Inverted Banner'] = { pos = 2861, section = 2 },
['Lime Per Bend Sinister Banner'] = { pos = 2862, section = 2 },
['Lime Per Bend Sinister Inverted Banner'] = { pos = 2863, section = 2 },
['Lime Per Fess Banner'] = { pos = 2864, section = 2 },
['Lime Per Fess Inverted Banner'] = { pos = 2865, section = 2 },
['Lime Per Pale Banner'] = { pos = 2866, section = 2 },
['Lime Per Pale Inverted Banner'] = { pos = 2867, section = 2 },
['Lime Piglin Banner'] = { pos = 367, section = 2 },
['Lime Roundel Banner'] = { pos = 2868, section = 2 },
['Lime Saltire Banner'] = { pos = 2869, section = 2 },
['Lime Shield'] = { pos = 2521, section = 1 },
['Lime Shulker Box'] = { pos = 1611, section = 7 },
['Lime Shulker Box Revision 1'] = { pos = 1424, section = 40 },
['Lime Skull Charge Banner'] = { pos = 2870, section = 2 },
['Lime Snout Banner'] = { pos = 367, section = 2 },
['Lime Stained Glass'] = { pos = 755, section = 7 },
['Lime Stained Glass Pane'] = { pos = 756, section = 7 },
['Lime Stained Glass Pane BE'] = { pos = 2016, section = 7 },
['Lime Terracotta'] = { pos = 754, section = 7 },
['Lime Thing Banner'] = { pos = 2871, section = 2 },
['Lime Tinted Glass'] = { pos = 1304, section = 40 },
['Lime Tinted Glass Pane'] = { pos = 11, section = 40 },
['Lime Wood Planks'] = { pos = 252, section = 30 },
['Lime Wool'] = { pos = 1531, section = 7 },
['Lime Wool Revision 2'] = { pos = 757, section = 40 },
['Lingering Awkward Potion Revision 1'] = { pos = 312, section = 46 },
['Lingering Mundane Potion Revision 1'] = { pos = 313, section = 46 },
['Lingering Potion of Big'] = { pos = 1258, section = 32 },
['Lingering Potion of Decay'] = { pos = 1406, section = 31 },
['Lingering Potion of Fire Resistance'] = { pos = 3484, section = 31 },
['Lingering Potion of Fire Resistance Revision 1'] = { pos = 314, section = 46 },
['Lingering Potion of Harming'] = { pos = 3485, section = 31 },
['Lingering Potion of Harming Revision 1'] = { pos = 315, section = 46 },
['Lingering Potion of Healing'] = { pos = 3486, section = 31 },
['Lingering Potion of Healing Revision 1'] = { pos = 316, section = 46 },
['Lingering Potion of Invisibility'] = { pos = 3487, section = 31 },
['Lingering Potion of Invisibility Revision 1'] = { pos = 317, section = 46 },
['Lingering Potion of Leaping'] = { pos = 3488, section = 31 },
['Lingering Potion of Leaping Revision 1'] = { pos = 318, section = 46 },
['Lingering Potion of Levitation'] = { pos = 116, section = 31 },
['Lingering Potion of Luck'] = { pos = 3489, section = 31 },
['Lingering Potion of Luck Revision 1'] = { pos = 319, section = 46 },
['Lingering Potion of Night Vision'] = { pos = 3490, section = 31 },
['Lingering Potion of Night Vision Revision 1'] = { pos = 320, section = 46 },
['Lingering Potion of Poison'] = { pos = 3491, section = 31 },
['Lingering Potion of Poison Revision 1'] = { pos = 321, section = 46 },
['Lingering Potion of Regeneration'] = { pos = 3492, section = 31 },
['Lingering Potion of Regeneration Revision 1'] = { pos = 322, section = 46 },
['Lingering Potion of Slow Falling'] = { pos = 3493, section = 31 },
['Lingering Potion of Slow Falling Revision 1'] = { pos = 323, section = 46 },
['Lingering Potion of Slowness'] = { pos = 3494, section = 31 },
['Lingering Potion of Slowness Revision 1'] = { pos = 324, section = 46 },
['Lingering Potion of Small'] = { pos = 1260, section = 32 },
['Lingering Potion of Strength'] = { pos = 3495, section = 31 },
['Lingering Potion of Strength Revision 1'] = { pos = 325, section = 46 },
['Lingering Potion of Swiftness'] = { pos = 3496, section = 31 },
['Lingering Potion of Swiftness Revision 1'] = { pos = 326, section = 46 },
['Lingering Potion of the Turtle Master'] = { pos = 3497, section = 31 },
['Lingering Potion of the Turtle Master Revision 1'] = { pos = 327, section = 46 },
['Lingering Potion of Water Breathing'] = { pos = 3498, section = 31 },
['Lingering Potion of Water Breathing Revision 1'] = { pos = 328, section = 46 },
['Lingering Potion of Weakness'] = { pos = 3499, section = 31 },
['Lingering Thick Potion Revision 1'] = { pos = 329, section = 46 },
['Lingering Uncraftable Potion Revision 1'] = { pos = 330, section = 46 },
['Lingering Water Bottle'] = { pos = 3501, section = 31 },
['Lingering Water Bottle Revision 1'] = { pos = 331, section = 46 },
['List Tag'] = { pos = 1261, section = 32 },
['Lit Deepslate Redstone Ore BE'] = { pos = 565, section = 18 },
['Lit Redstone Lamp Post-Flip'] = { pos = 380, section = 29 },
['Lit Redstone Ore'] = { pos = 2171, section = 29 },
['Lit Redstone Ore BE'] = { pos = 564, section = 18 },
Lithium = { pos = 1827, section = 34 },
['Lithium Hydride'] = { pos = 1915, section = 37 },
Livermorium = { pos = 1828, section = 34 },
['Llama Spawn Egg'] = { pos = 1412, section = 24 },
['Locked chest'] = { pos = 1251, section = 29 },
['Locked Chest 12w19a'] = { pos = 1317, section = 30 },
['Locked Chest 12w22a'] = { pos = 1305, section = 30 },
['Locked Chest 13w01a'] = { pos = 553, section = 30 },
['Locked Chest 13w03a'] = { pos = 554, section = 30 },
['Locked Chest 13w18a'] = { pos = 1306, section = 30 },
['Locked Map'] = { pos = 131, section = 25 },
Lodestone = { pos = 222, section = 12 },
['Lodestone Compass'] = { pos = 577, section = 25 },
['Lodestone-Compass'] = { pos = 577, section = 25 },
['Long Tag'] = { pos = 1262, section = 32 },
['Longer String'] = { pos = 1322, section = 32 },
Loom = { pos = 2446, section = 26 },
['Loom Revision 1'] = { pos = 20, section = 26 },
Luminol = { pos = 1922, section = 37 },
Lutetium = { pos = 1829, section = 34 },
Lye = { pos = 1915, section = 37 },
['Magenta Balloon'] = { pos = 1939, section = 33 },
['Magenta Banner'] = { pos = 758, section = 7 },
['Magenta Banner 15w14a'] = { pos = 481, section = 32 },
['Magenta Base Banner'] = { pos = 2872, section = 2 },
['Magenta Base Dexter Canton Banner'] = { pos = 2873, section = 2 },
['Magenta Base Gradient Banner'] = { pos = 2874, section = 2 },
['Magenta Base Indented Banner'] = { pos = 2875, section = 2 },
['Magenta Base Sinister Canton Banner'] = { pos = 2876, section = 2 },
['Magenta Bed'] = { pos = 3180, section = 7 },
['Magenta Bed BE'] = { pos = 1554, section = 7 },
['Magenta Bed LCE'] = { pos = 1554, section = 7 },
['Magenta Bend Banner'] = { pos = 2877, section = 2 },
['Magenta Bend Sinister Banner'] = { pos = 2878, section = 2 },
['Magenta Bordure Banner'] = { pos = 2879, section = 2 },
['Magenta Bordure Indented Banner'] = { pos = 2880, section = 2 },
['Magenta Candle'] = { pos = 417, section = 7 },
['Magenta Carpet'] = { pos = 1630, section = 7 },
['Magenta Carpet Revision 1'] = { pos = 759, section = 40 },
['Magenta Chevron Banner'] = { pos = 2881, section = 2 },
['Magenta Chief Banner'] = { pos = 2882, section = 2 },
['Magenta Chief Dexter Canton Banner'] = { pos = 2883, section = 2 },
['Magenta Chief Indented Banner'] = { pos = 2884, section = 2 },
['Magenta Chief Sinister Canton Banner'] = { pos = 2885, section = 2 },
['Magenta Cloth'] = { pos = 235, section = 40 },
['Magenta Concrete'] = { pos = 1502, section = 7 },
['Magenta Concrete Powder'] = { pos = 1503, section = 7 },
['Magenta Creeper Charge Banner'] = { pos = 2886, section = 2 },
['Magenta Cross Banner'] = { pos = 2887, section = 2 },
['Magenta Dye'] = { pos = 3165, section = 6 },
['Magenta Fess Banner'] = { pos = 2888, section = 2 },
['Magenta Field Masoned Banner'] = { pos = 2889, section = 2 },
['Magenta Firework Star'] = { pos = 815, section = 9 },
['Magenta Flower Charge Banner'] = { pos = 2890, section = 2 },
['Magenta Glazed Terracotta'] = { pos = 1541, section = 7 },
['Magenta Glazed Terracotta Revision 1'] = { pos = 1504, section = 40 },
['Magenta Globe Banner'] = { pos = 45, section = 2 },
['Magenta Glow Stick'] = { pos = 2001, section = 33 },
['Magenta Gradient Banner'] = { pos = 2891, section = 2 },
['Magenta Inverted Chevron Banner'] = { pos = 2892, section = 2 },
['Magenta Lozenge Banner'] = { pos = 2893, section = 2 },
['Magenta Pale Banner'] = { pos = 2894, section = 2 },
['Magenta Pale Dexter Banner'] = { pos = 2895, section = 2 },
['Magenta Pale Sinister Banner'] = { pos = 2896, section = 2 },
['Magenta Paly Banner'] = { pos = 2897, section = 2 },
['Magenta Per Bend Banner'] = { pos = 2898, section = 2 },
['Magenta Per Bend Inverted Banner'] = { pos = 2899, section = 2 },
['Magenta Per Bend Sinister Banner'] = { pos = 2900, section = 2 },
['Magenta Per Bend Sinister Inverted Banner'] = { pos = 2901, section = 2 },
['Magenta Per Fess Banner'] = { pos = 2902, section = 2 },
['Magenta Per Fess Inverted Banner'] = { pos = 2903, section = 2 },
['Magenta Per Pale Banner'] = { pos = 2904, section = 2 },
['Magenta Per Pale Inverted Banner'] = { pos = 2905, section = 2 },
['Magenta Piglin Banner'] = { pos = 368, section = 2 },
['Magenta Roundel Banner'] = { pos = 2906, section = 2 },
['Magenta Saltire Banner'] = { pos = 2907, section = 2 },
['Magenta Shield'] = { pos = 2522, section = 1 },
['Magenta Shulker Box'] = { pos = 1612, section = 7 },
['Magenta Shulker Box Revision 1'] = { pos = 1425, section = 40 },
['Magenta Skull Charge Banner'] = { pos = 2908, section = 2 },
['Magenta Snout Banner'] = { pos = 368, section = 2 },
['Magenta Stained Glass'] = { pos = 761, section = 7 },
['Magenta Stained Glass Pane'] = { pos = 762, section = 7 },
['Magenta Stained Glass Pane BE'] = { pos = 2017, section = 7 },
['Magenta Terracotta'] = { pos = 760, section = 7 },
['Magenta Thing Banner'] = { pos = 2909, section = 2 },
['Magenta Tinted Glass'] = { pos = 1307, section = 40 },
['Magenta Tinted Glass Pane'] = { pos = 12, section = 40 },
['Magenta Wood Planks'] = { pos = 253, section = 30 },
['Magenta Wool'] = { pos = 1532, section = 7 },
['Magenta Wool Revision 2'] = { pos = 763, section = 40 },
['Magma Block BE'] = { pos = 510, section = 16 },
['Magma Cream'] = { pos = 3143, section = 3 },
['Magma Cube Spawn Egg'] = { pos = 1153, section = 24 },
['Magma Cube Spawn Egg Revision 1'] = { pos = 1389, section = 39 },
Magnesium = { pos = 1830, section = 34 },
['Magnesium Nitrate'] = { pos = 1924, section = 37 },
['Magnesium Oxide'] = { pos = 1915, section = 37 },
Manganese = { pos = 1831, section = 34 },
['Mangrove Boat'] = { pos = 639, section = 27 },
['Mangrove Boat with Chest'] = { pos = 618, section = 27 },
['Mangrove Button'] = { pos = 599, section = 13 },
['Mangrove Door'] = { pos = 600, section = 13 },
['Mangrove Fence'] = { pos = 647, section = 12 },
['Mangrove Fence BE'] = { pos = 585, section = 12 },
['Mangrove Fence Gate'] = { pos = 586, section = 12 },
['Mangrove Hanging Sign'] = { pos = 657, section = 5 },
['Mangrove Leaves'] = { pos = 605, section = 19 },
['Mangrove Log'] = { pos = 606, section = 19 },
['Mangrove Planks'] = { pos = 587, section = 12 },
['Mangrove Pressure Plate'] = { pos = 601, section = 13 },
['Mangrove Propagule'] = { pos = 607, section = 19 },
['Mangrove Roots'] = { pos = 608, section = 19 },
['Mangrove Sign'] = { pos = 604, section = 17 },
['Mangrove Slab'] = { pos = 588, section = 12 },
['Mangrove Stairs'] = { pos = 589, section = 12 },
['Mangrove Trapdoor'] = { pos = 602, section = 13 },
['Mangrove Wood'] = { pos = 590, section = 12 },
['Mangrove Wood Button'] = { pos = 599, section = 13 },
['Mangrove Wood Door'] = { pos = 600, section = 13 },
['Mangrove Wood Fence'] = { pos = 647, section = 12 },
['Mangrove Wood Fence BE'] = { pos = 585, section = 12 },
['Mangrove Wood Fence Gate'] = { pos = 586, section = 12 },
['Mangrove Wood Planks'] = { pos = 587, section = 12 },
['Mangrove Wood Pressure Plate'] = { pos = 601, section = 13 },
['Mangrove Wood Sign'] = { pos = 604, section = 17 },
['Mangrove Wood Slab'] = { pos = 588, section = 12 },
['Mangrove Wood Stairs'] = { pos = 589, section = 12 },
['Mangrove Wood Trapdoor'] = { pos = 602, section = 13 },
Map = { pos = 3579, section = 25 },
['Map BE'] = { pos = 124, section = 25 },
['Material Reducer'] = { pos = 1940, section = 33 },
['Medium Amethyst Bud'] = { pos = 418, section = 15 },
Meitnerium = { pos = 1832, section = 34 },
Melon = { pos = 3427, section = 19 },
['Melon Seeds'] = { pos = 1050, section = 19 },
['Melon Slice'] = { pos = 3207, section = 10 },
Mendelevium = { pos = 1833, section = 34 },
['Mercuric Chloride'] = { pos = 1915, section = 37 },
Mercury = { pos = 1817, section = 34 },
Metalloid = { pos = 71, section = 34 },
['MHF Alex'] = { pos = 1438, section = 14 },
['MHF ArrowDown'] = { pos = 1439, section = 14 },
['MHF ArrowLeft'] = { pos = 1440, section = 14 },
['MHF ArrowRight'] = { pos = 1441, section = 14 },
['MHF ArrowUp'] = { pos = 1442, section = 14 },
['MHF Blaze'] = { pos = 1443, section = 14 },
['MHF Cactus'] = { pos = 1444, section = 14 },
['MHF Cake'] = { pos = 1445, section = 14 },
['MHF CaveSpider'] = { pos = 1446, section = 14 },
['MHF Chest'] = { pos = 1447, section = 14 },
['MHF Chicken'] = { pos = 1448, section = 14 },
['MHF CoconutB'] = { pos = 1449, section = 14 },
['MHF CoconutG'] = { pos = 1450, section = 14 },
['MHF Cow'] = { pos = 1451, section = 14 },
['MHF Creeper'] = { pos = 964, section = 14 },
['MHF Enderman'] = { pos = 1452, section = 14 },
['MHF Exclamation'] = { pos = 1453, section = 14 },
['MHF Ghast'] = { pos = 1454, section = 14 },
['MHF Golem'] = { pos = 1455, section = 14 },
['MHF Herobrine'] = { pos = 1456, section = 14 },
['MHF LavaSlime'] = { pos = 1457, section = 14 },
['MHF Melon'] = { pos = 1458, section = 14 },
['MHF MushroomCow'] = { pos = 1459, section = 14 },
['MHF OakLog'] = { pos = 1460, section = 14 },
['MHF Ocelot'] = { pos = 1461, section = 14 },
['MHF Pig'] = { pos = 1462, section = 14 },
['MHF PigZombie'] = { pos = 1463, section = 14 },
['MHF Present1'] = { pos = 1464, section = 14 },
['MHF Present2'] = { pos = 1465, section = 14 },
['MHF Pumpkin'] = { pos = 1466, section = 14 },
['MHF Question'] = { pos = 1467, section = 14 },
['MHF Sheep'] = { pos = 1468, section = 14 },
['MHF Skeleton'] = { pos = 3643, section = 14 },
['MHF Slime'] = { pos = 1469, section = 14 },
['MHF Spider'] = { pos = 1470, section = 14 },
['MHF Squid'] = { pos = 1471, section = 14 },
['MHF Steve'] = { pos = 966, section = 14 },
['MHF TNT'] = { pos = 1472, section = 14 },
['MHF TNT2'] = { pos = 1473, section = 14 },
['MHF Villager'] = { pos = 1474, section = 14 },
['MHF WSkeleton'] = { pos = 3644, section = 14 },
['MHF Zombie'] = { pos = 3645, section = 14 },
Milk = { pos = 3148, section = 4 },
['Milk Bucket'] = { pos = 3148, section = 4 },
['Milk Bucket Revision 1'] = { pos = 226, section = 29 },
Minecart = { pos = 3622, section = 27 },
['Minecart with Chest'] = { pos = 3623, section = 27 },
['Minecart with Command Block'] = { pos = 3624, section = 27 },
['Minecart with Command Block BE'] = { pos = 1539, section = 27 },
['Minecart with Furnace'] = { pos = 3625, section = 27 },
['Minecart with Hopper'] = { pos = 3626, section = 27 },
['Minecart with TNT'] = { pos = 3627, section = 27 },
['Miner Pottery Sherd'] = { pos = 1230, section = 44 },
['Missing Model JE1'] = { pos = 1306, section = 30 },
['Missing Texture'] = { pos = 1306, section = 30, deprecated = true },
['Missing Texture 1.5'] = { pos = 554, section = 30, deprecated = true },
['Missing Texture BE'] = { pos = 356, section = 30, deprecated = true },
Molybdenum = { pos = 1834, section = 34 },
['Monster Spawner'] = { pos = 3379, section = 15 },
['Monster Spawner BE'] = { pos = 508, section = 15 },
['Monster Spawner JE'] = { pos = 3379, section = 15 },
['Moobloom Spawn Egg'] = { pos = 627, section = 38 },
['Moon Cow Spawn Egg'] = { pos = 1325, section = 32 },
['Mooshroom Spawn Egg'] = { pos = 1154, section = 24 },
['Mooshroom Spawn Egg Revision 1'] = { pos = 1390, section = 39 },
Moscovium = { pos = 1835, section = 34 },
['Moss Block'] = { pos = 461, section = 15 },
['Moss Carpet'] = { pos = 462, section = 15 },
['Moss Stone'] = { pos = 986, section = 15 },
['Mossy Cobblestone'] = { pos = 3367, section = 15 },
['Mossy Cobblestone Slab'] = { pos = 3274, section = 12 },
['Mossy Cobblestone Stairs'] = { pos = 3275, section = 12 },
['Mossy Cobblestone Wall'] = { pos = 3276, section = 12 },
['Mossy Cobblestone Wall BE'] = { pos = 2027, section = 12 },
['Mossy Stone Brick Slab'] = { pos = 3277, section = 12 },
['Mossy Stone Brick Stairs'] = { pos = 3278, section = 12 },
['Mossy Stone Brick Wall'] = { pos = 3279, section = 12 },
['Mossy Stone Brick Wall BE'] = { pos = 26, section = 12 },
['Mossy Stone Bricks'] = { pos = 3368, section = 15 },
['Mossy Stone Bricks Monster Egg'] = { pos = 3368, section = 15 },
['Mourner Pottery Sherd'] = { pos = 1231, section = 44 },
Mud = { pos = 603, section = 15 },
['Mud Brick Slab'] = { pos = 591, section = 12 },
['Mud Brick Stairs'] = { pos = 592, section = 12 },
['Mud Brick Wall'] = { pos = 593, section = 12 },
['Mud Brick Wall BE'] = { pos = 629, section = 12 },
['Mud Bricks'] = { pos = 594, section = 12 },
['Mud Bucket'] = { pos = 92, section = 38 },
['Muddy Mangrove Roots'] = { pos = 609, section = 19 },
['Mule Spawn Egg'] = { pos = 1374, section = 24 },
['Mule Spawn Egg Revision 1'] = { pos = 1152, section = 24 },
['Mundane Lingering Potion'] = { pos = 1097, section = 31 },
['Mundane Potion'] = { pos = 1083, section = 21 },
['Mundane Potion Revision 1'] = { pos = 293, section = 45 },
['Mundane Splash Potion'] = { pos = 1100, section = 22 },
['Mushroom Stem'] = { pos = 3428, section = 19 },
['Mushroom Stew'] = { pos = 3208, section = 10 },
['Music Disc 11'] = { pos = 3153, section = 5 },
['Music Disc 13'] = { pos = 673, section = 5 },
['Music Disc 5'] = { pos = 630, section = 5 },
['Music Disc Blocks'] = { pos = 675, section = 5 },
['Music Disc Cat'] = { pos = 676, section = 5 },
['Music Disc Chirp'] = { pos = 677, section = 5 },
['Music Disc Far'] = { pos = 678, section = 5 },
['Music Disc Mall'] = { pos = 681, section = 5 },
['Music Disc Mellohi'] = { pos = 682, section = 5 },
['Music Disc Otherside'] = { pos = 555, section = 5 },
['Music Disc Pigstep'] = { pos = 289, section = 5 },
['Music Disc Relic'] = { pos = 1324, section = 5 },
['Music Disc Stal'] = { pos = 684, section = 5 },
['Music Disc Strad'] = { pos = 685, section = 5 },
['Music Disc Wait'] = { pos = 686, section = 5 },
['Music Disc Ward'] = { pos = 687, section = 5 },
Mycelium = { pos = 3369, section = 15 },
['Mycelium Revision 1'] = { pos = 106, section = 29 },
Name = { pos = 1263, section = 32 },
['Name Tag'] = { pos = 3580, section = 25 },
Natrium = { pos = 1836, section = 34 },
['Nautilus Shell'] = { pos = 1743, section = 23 },
Neodymium = { pos = 1837, section = 34 },
Neon = { pos = 1838, section = 34 },
Neptunium = { pos = 1839, section = 34 },
['Nether Brick'] = { pos = 3520, section = 23 },
['Nether Brick Block'] = { pos = 1003, section = 16 },
['Nether Brick Fence'] = { pos = 640, section = 16 },
['Nether Brick Fence BE'] = { pos = 3383, section = 16 },
['Nether Brick Slab'] = { pos = 3280, section = 12 },
['Nether Brick Stairs'] = { pos = 3384, section = 16 },
['Nether Brick Stairs Left'] = { pos = 2260, section = 42 },
['Nether Brick Wall'] = { pos = 3281, section = 12 },
['Nether Brick Wall BE'] = { pos = 27, section = 12 },
['Nether Bricks'] = { pos = 3385, section = 16 },
['Nether Gold Ore'] = { pos = 202, section = 16 },
['Nether Gold Ore Revision 1'] = { pos = 225, section = 29 },
['Nether Portal'] = { pos = 2162, section = 29 },
['Nether Quartz'] = { pos = 3521, section = 23 },
['Nether Quartz Ore'] = { pos = 3386, section = 16 },
['Nether Reactor Core'] = { pos = 1599, section = 20 },
['Nether Reactor Core Revision 1'] = { pos = 1081, section = 29 },
['Nether Sprouts'] = { pos = 94, section = 16 },
['Nether Sprouts old'] = { pos = 191, section = 16 },
['Nether Sprouts Revision 1'] = { pos = 267, section = 29 },
['Nether Star'] = { pos = 355, section = 23 },
['Nether Wart'] = { pos = 663, section = 3 },
['Nether Wart (block)'] = { pos = 1007, section = 16 },
['Nether Wart Block'] = { pos = 3282, section = 16 },
['Netherite Axe'] = { pos = 137, section = 25 },
['Netherite Boots'] = { pos = 142, section = 1 },
['Netherite Chestplate'] = { pos = 143, section = 1 },
['Netherite Helmet'] = { pos = 144, section = 1 },
['Netherite Hoe'] = { pos = 138, section = 25 },
['Netherite Ingot'] = { pos = 135, section = 23 },
['Netherite Leggings'] = { pos = 145, section = 1 },
['Netherite Pickaxe'] = { pos = 139, section = 25 },
['Netherite Scrap'] = { pos = 136, section = 23 },
['Netherite Shovel'] = { pos = 140, section = 25 },
['Netherite Sword'] = { pos = 141, section = 28 },
['Netherite Trim Chainmail Boots'] = { pos = 1063, section = 43 },
['Netherite Trim Chainmail Chestplate'] = { pos = 1064, section = 43 },
['Netherite Trim Chainmail Helmet'] = { pos = 1066, section = 43 },
['Netherite Trim Chainmail Leggings'] = { pos = 1069, section = 43 },
['Netherite Trim Diamond Boots'] = { pos = 1070, section = 43 },
['Netherite Trim Diamond Chestplate'] = { pos = 1071, section = 43 },
['Netherite Trim Diamond Helmet'] = { pos = 1072, section = 43 },
['Netherite Trim Diamond Leggings'] = { pos = 1073, section = 43 },
['Netherite Trim Golden Boots'] = { pos = 1074, section = 43 },
['Netherite Trim Golden Chestplate'] = { pos = 1075, section = 43 },
['Netherite Trim Golden Helmet'] = { pos = 1076, section = 43 },
['Netherite Trim Golden Leggings'] = { pos = 1077, section = 43 },
['Netherite Trim Iron Boots'] = { pos = 1078, section = 43 },
['Netherite Trim Iron Chestplate'] = { pos = 1084, section = 43 },
['Netherite Trim Iron Helmet'] = { pos = 1085, section = 43 },
['Netherite Trim Iron Leggings'] = { pos = 1086, section = 43 },
['Netherite Trim Leather Boots'] = { pos = 1087, section = 43 },
['Netherite Trim Leather Cap'] = { pos = 1088, section = 43 },
['Netherite Trim Leather Pants'] = { pos = 1089, section = 43 },
['Netherite Trim Leather Tunic'] = { pos = 1090, section = 43 },
['Netherite Trim Netherite Boots'] = { pos = 1091, section = 43 },
['Netherite Trim Netherite Chestplate'] = { pos = 1092, section = 43 },
['Netherite Trim Netherite Helmet'] = { pos = 1093, section = 43 },
['Netherite Trim Netherite Leggings'] = { pos = 1094, section = 43 },
['Netherite Trim Turtle Shell'] = { pos = 1095, section = 43 },
['Netherite Upgrade'] = { pos = 801, section = 41 },
['Netherite Upgrade Smithing Template'] = { pos = 801, section = 41 },
Netherrack = { pos = 3387, section = 16 },
Nickel = { pos = 1840, section = 34 },
Nihonium = { pos = 1841, section = 34 },
Niobium = { pos = 1842, section = 34 },
Nitrogen = { pos = 1843, section = 34 },
Nobelium = { pos = 1844, section = 34 },
['Noble gas'] = { pos = 72, section = 34 },
['Note Block'] = { pos = 3611, section = 26 },
['Oak Boat'] = { pos = 633, section = 27 },
['Oak Boat Revision 2'] = { pos = 3628, section = 29 },
['Oak Boat with Chest'] = { pos = 616, section = 27 },
['Oak Button'] = { pos = 3340, section = 13 },
['Oak Door'] = { pos = 571, section = 13 },
['Oak Door Revision 3'] = { pos = 945, section = 13 },
['Oak Fence'] = { pos = 641, section = 12 },
['Oak Fence BE'] = { pos = 3284, section = 12 },
['Oak Fence Gate'] = { pos = 3283, section = 13 },
['Oak Fence Gate BE'] = { pos = 56, section = 13 },
['Oak Fence Gate Revision 1'] = { pos = 1620, section = 13 },
['Oak Hanging Sign'] = { pos = 658, section = 5 },
['Oak Leaves'] = { pos = 3429, section = 19 },
['Oak Log'] = { pos = 3430, section = 19 },
['Oak Planks'] = { pos = 903, section = 12 },
['Oak Pressure Plate'] = { pos = 3341, section = 13 },
['Oak Pressure Plate Revision 1'] = { pos = 2086, section = 29 },
['Oak Sapling'] = { pos = 3431, section = 19 },
['Oak Sign'] = { pos = 3389, section = 17 },
['Oak Sign Revision 1'] = { pos = 354, section = 29 },
['Oak Slab'] = { pos = 3285, section = 12 },
['Oak Stairs'] = { pos = 3286, section = 12 },
['Oak Stairs Left'] = { pos = 2261, section = 42 },
['Oak Trapdoor'] = { pos = 958, section = 13 },
['Oak Wood'] = { pos = 3287, section = 12 },
['Oak Wood Button'] = { pos = 3340, section = 13 },
['Oak Wood Door'] = { pos = 571, section = 13 },
['Oak Wood Fence'] = { pos = 641, section = 12 },
['Oak Wood Fence Gate'] = { pos = 3283, section = 13 },
['Oak Wood Planks'] = { pos = 903, section = 12 },
['Oak Wood Pressure Plate'] = { pos = 3341, section = 13 },
['Oak Wood Sign'] = { pos = 3389, section = 17 },
['Oak Wood Slab'] = { pos = 904, section = 12 },
['Oak Wood Stairs'] = { pos = 3286, section = 12 },
['Oak Wood Trapdoor'] = { pos = 958, section = 13 },
Observer = { pos = 3612, section = 26 },
['Observer BE'] = { pos = 1619, section = 13 },
['Observer PE old'] = { pos = 1383, section = 29 },
['Observer pre-1.11-pre1'] = { pos = 1383, section = 29 },
Obsidian = { pos = 3370, section = 15 },
['Obsidian Boat'] = { pos = 1308, section = 32 },
['Ocean Explorer Map'] = { pos = 3581, section = 25 },
['Ocean Explorer Map BE'] = { pos = 125, section = 25 },
['Ocelot Spawn Egg'] = { pos = 1155, section = 24 },
['Ochre Froglight'] = { pos = 595, section = 12 },
['Ochre Froglight BE'] = { pos = 578, section = 12 },
Oganesson = { pos = 1845, section = 34 },
['Ominous Banner'] = { pos = 2468, section = 2 },
['Ominous Shield'] = { pos = 377, section = 1 },
['Orange Balloon'] = { pos = 1941, section = 33 },
['Orange Banner'] = { pos = 764, section = 7 },
['Orange Banner 15w14a'] = { pos = 482, section = 32 },
['Orange Base Banner'] = { pos = 2910, section = 2 },
['Orange Base Dexter Canton Banner'] = { pos = 2911, section = 2 },
['Orange Base Gradient Banner'] = { pos = 2912, section = 2 },
['Orange Base Indented Banner'] = { pos = 2913, section = 2 },
['Orange Base Sinister Canton Banner'] = { pos = 2914, section = 2 },
['Orange Beaker'] = { pos = 1899, section = 35 },
['Orange Bed'] = { pos = 3181, section = 7 },
['Orange Bed BE'] = { pos = 1555, section = 7 },
['Orange Bed LCE'] = { pos = 1555, section = 7 },
['Orange Bend Banner'] = { pos = 2915, section = 2 },
['Orange Bend Sinister Banner'] = { pos = 2916, section = 2 },
['Orange Bordure Banner'] = { pos = 2917, section = 2 },
['Orange Bordure Indented Banner'] = { pos = 2918, section = 2 },
['Orange Candle'] = { pos = 419, section = 7 },
['Orange Carpet'] = { pos = 1631, section = 7 },
['Orange Carpet Revision 1'] = { pos = 765, section = 40 },
['Orange Chevron Banner'] = { pos = 2919, section = 2 },
['Orange Chief Banner'] = { pos = 2920, section = 2 },
['Orange Chief Dexter Canton Banner'] = { pos = 2921, section = 2 },
['Orange Chief Indented Banner'] = { pos = 2922, section = 2 },
['Orange Chief Sinister Canton Banner'] = { pos = 2923, section = 2 },
['Orange Cloth'] = { pos = 236, section = 40 },
['Orange Concrete'] = { pos = 1505, section = 7 },
['Orange Concrete Powder'] = { pos = 1506, section = 7 },
['Orange Creeper Charge Banner'] = { pos = 2924, section = 2 },
['Orange Cross Banner'] = { pos = 2925, section = 2 },
['Orange Dye'] = { pos = 3166, section = 6 },
['Orange Fess Banner'] = { pos = 2926, section = 2 },
['Orange Field Masoned Banner'] = { pos = 2927, section = 2 },
['Orange Firework Star'] = { pos = 816, section = 9 },
['Orange Flask'] = { pos = 1911, section = 36 },
['Orange Flower Charge Banner'] = { pos = 2928, section = 2 },
['Orange Glazed Terracotta'] = { pos = 1542, section = 7 },
['Orange Glazed Terracotta Revision 1'] = { pos = 1507, section = 40 },
['Orange Globe Banner'] = { pos = 46, section = 2 },
['Orange Glow Stick'] = { pos = 2002, section = 33 },
['Orange Gradient Banner'] = { pos = 2929, section = 2 },
['Orange Inverted Chevron Banner'] = { pos = 2930, section = 2 },
['Orange Jar'] = { pos = 1925, section = 37 },
['Orange Lozenge Banner'] = { pos = 2931, section = 2 },
['Orange Pale Banner'] = { pos = 2932, section = 2 },
['Orange Pale Dexter Banner'] = { pos = 2933, section = 2 },
['Orange Pale Sinister Banner'] = { pos = 2934, section = 2 },
['Orange Paly Banner'] = { pos = 2935, section = 2 },
['Orange Per Bend Banner'] = { pos = 2936, section = 2 },
['Orange Per Bend Inverted Banner'] = { pos = 2937, section = 2 },
['Orange Per Bend Sinister Banner'] = { pos = 2938, section = 2 },
['Orange Per Bend Sinister Inverted Banner'] = { pos = 2939, section = 2 },
['Orange Per Fess Banner'] = { pos = 2940, section = 2 },
['Orange Per Fess Inverted Banner'] = { pos = 2941, section = 2 },
['Orange Per Pale Banner'] = { pos = 2942, section = 2 },
['Orange Per Pale Inverted Banner'] = { pos = 2943, section = 2 },
['Orange Piglin Banner'] = { pos = 369, section = 2 },
['Orange Roundel Banner'] = { pos = 2944, section = 2 },
['Orange Saltire Banner'] = { pos = 2945, section = 2 },
['Orange Shield'] = { pos = 2523, section = 1 },
['Orange Shulker Box'] = { pos = 1613, section = 7 },
['Orange Shulker Box Revision 1'] = { pos = 1426, section = 40 },
['Orange Skull Charge Banner'] = { pos = 2946, section = 2 },
['Orange Snout Banner'] = { pos = 369, section = 2 },
['Orange Sparkler'] = { pos = 1758, section = 33 },
['Orange Sparkler (active)'] = { pos = 1759, section = 33 },
['Orange Stained Glass'] = { pos = 767, section = 7 },
['Orange Stained Glass Pane'] = { pos = 768, section = 7 },
['Orange Stained Glass Pane BE'] = { pos = 2018, section = 7 },
['Orange Terracotta'] = { pos = 766, section = 7 },
['Orange Thing Banner'] = { pos = 2947, section = 2 },
['Orange Tinted Glass'] = { pos = 1309, section = 40 },
['Orange Tinted Glass Pane'] = { pos = 13, section = 40 },
['Orange Tulip'] = { pos = 3432, section = 19 },
['Orange Wood Planks'] = { pos = 254, section = 30 },
['Orange Wool'] = { pos = 1533, section = 7 },
['Orange Wool Revision 2'] = { pos = 769, section = 40 },
Osmium = { pos = 1846, section = 34 },
['Other non-metal'] = { pos = 73, section = 34 },
['Oxeye Daisy'] = { pos = 3433, section = 19 },
['Oxidized Copper'] = { pos = 441, section = 12 },
['Oxidized Copper Block'] = { pos = 441, section = 12 },
['Oxidized Cut Copper'] = { pos = 442, section = 12 },
['Oxidized Cut Copper Block'] = { pos = 442, section = 12 },
['Oxidized Cut Copper Slab'] = { pos = 443, section = 12 },
['Oxidized Cut Copper Stairs'] = { pos = 444, section = 12 },
Oxygen = { pos = 1847, section = 34 },
['Packed Air'] = { pos = 2363, section = 15 },
['Packed Ice'] = { pos = 3371, section = 15 },
['Packed Mud'] = { pos = 596, section = 12 },
Painting = { pos = 3154, section = 5 },
Palladium = { pos = 1848, section = 34 },
['Panda Spawn Egg'] = { pos = 2412, section = 24 },
Paper = { pos = 3523, section = 23 },
['Parrot Spawn Egg'] = { pos = 1544, section = 24 },
['Pearlescent Froglight'] = { pos = 612, section = 12 },
['Pearlescent Froglight BE'] = { pos = 579, section = 12 },
Peony = { pos = 3434, section = 19 },
['Peony 3DS'] = { pos = 1572, section = 29 },
['Peony BE Revision 2'] = { pos = 1572, section = 29 },
['Peony LCE Revision 2'] = { pos = 1572, section = 29 },
['Petrified Oak Slab'] = { pos = 904, section = 12 },
['Phantom Membrane'] = { pos = 1730, section = 3 },
['Phantom Membrane Revision 1'] = { pos = 105, section = 29 },
['Phantom Spawn Egg'] = { pos = 1974, section = 24 },
['Phantom Spawn Egg Revision 1'] = { pos = 1728, section = 39 },
Phosphorus = { pos = 1849, section = 34 },
Photo = { pos = 620, section = 20 },
['Pickaxe Block'] = { pos = 1264, section = 32 },
['Pig Spawn Egg'] = { pos = 1156, section = 24 },
['Pig Spawn Egg Revision 1'] = { pos = 1391, section = 39 },
['Piglin Brute Spawn Egg'] = { pos = 262, section = 24 },
['Piglin Head'] = { pos = 701, section = 14 },
['Piglin Spawn Egg'] = { pos = 193, section = 24 },
['Piglin Spawn Egg BE'] = { pos = 205, section = 24 },
['Pillager Spawn Egg'] = { pos = 2413, section = 24 },
['Pink Balloon'] = { pos = 1942, section = 33 },
['Pink Banner'] = { pos = 770, section = 7 },
['Pink Banner 15w14a'] = { pos = 483, section = 32 },
['Pink Base Banner'] = { pos = 2948, section = 2 },
['Pink Base Dexter Canton Banner'] = { pos = 2949, section = 2 },
['Pink Base Gradient Banner'] = { pos = 2950, section = 2 },
['Pink Base Indented Banner'] = { pos = 2951, section = 2 },
['Pink Base Sinister Canton Banner'] = { pos = 2952, section = 2 },
['Pink Bed'] = { pos = 3182, section = 7 },
['Pink Bed BE'] = { pos = 1556, section = 7 },
['Pink Bed LCE'] = { pos = 1556, section = 7 },
['Pink Bend Banner'] = { pos = 2953, section = 2 },
['Pink Bend Sinister Banner'] = { pos = 2954, section = 2 },
['Pink Bordure Banner'] = { pos = 2955, section = 2 },
['Pink Bordure Indented Banner'] = { pos = 2956, section = 2 },
['Pink Candle'] = { pos = 420, section = 7 },
['Pink Carpet'] = { pos = 1632, section = 7 },
['Pink Carpet Revision 1'] = { pos = 771, section = 40 },
['Pink Chevron Banner'] = { pos = 2957, section = 2 },
['Pink Chief Banner'] = { pos = 2958, section = 2 },
['Pink Chief Dexter Canton Banner'] = { pos = 2959, section = 2 },
['Pink Chief Indented Banner'] = { pos = 2960, section = 2 },
['Pink Chief Sinister Canton Banner'] = { pos = 2961, section = 2 },
['Pink Concrete'] = { pos = 1508, section = 7 },
['Pink Concrete Powder'] = { pos = 1509, section = 7 },
['Pink Creeper Charge Banner'] = { pos = 2962, section = 2 },
['Pink Cross Banner'] = { pos = 2963, section = 2 },
['Pink Daisy'] = { pos = 552, section = 38 },
['Pink Dye'] = { pos = 3167, section = 6 },
['Pink Fess Banner'] = { pos = 2964, section = 2 },
['Pink Field Masoned Banner'] = { pos = 2965, section = 2 },
['Pink Firework Star'] = { pos = 817, section = 9 },
['Pink Flower Charge Banner'] = { pos = 2966, section = 2 },
['Pink Glazed Terracotta'] = { pos = 1510, section = 7 },
['Pink Globe Banner'] = { pos = 47, section = 2 },
['Pink Glow Stick'] = { pos = 2003, section = 33 },
['Pink Gradient Banner'] = { pos = 2967, section = 2 },
['Pink Inverted Chevron Banner'] = { pos = 2968, section = 2 },
['Pink Lozenge Banner'] = { pos = 2969, section = 2 },
['Pink Pale Banner'] = { pos = 2970, section = 2 },
['Pink Pale Dexter Banner'] = { pos = 2971, section = 2 },
['Pink Pale Sinister Banner'] = { pos = 2972, section = 2 },
['Pink Paly Banner'] = { pos = 2973, section = 2 },
['Pink Per Bend Banner'] = { pos = 2974, section = 2 },
['Pink Per Bend Inverted Banner'] = { pos = 2975, section = 2 },
['Pink Per Bend Sinister Banner'] = { pos = 2976, section = 2 },
['Pink Per Bend Sinister Inverted Banner'] = { pos = 2977, section = 2 },
['Pink Per Fess Banner'] = { pos = 2978, section = 2 },
['Pink Per Fess Inverted Banner'] = { pos = 2979, section = 2 },
['Pink Per Pale Banner'] = { pos = 2980, section = 2 },
['Pink Per Pale Inverted Banner'] = { pos = 2981, section = 2 },
['Pink Petals'] = { pos = 1198, section = 19 },
['Pink Piglin Banner'] = { pos = 370, section = 2 },
['Pink Roundel Banner'] = { pos = 2982, section = 2 },
['Pink Saltire Banner'] = { pos = 2983, section = 2 },
['Pink Shield'] = { pos = 2524, section = 1 },
['Pink Shulker Box'] = { pos = 1614, section = 7 },
['Pink Shulker Box Revision 1'] = { pos = 1427, section = 40 },
['Pink Skull Charge Banner'] = { pos = 2984, section = 2 },
['Pink Snout Banner'] = { pos = 370, section = 2 },
['Pink Stained Glass'] = { pos = 773, section = 7 },
['Pink Stained Glass Pane'] = { pos = 774, section = 7 },
['Pink Stained Glass Pane BE'] = { pos = 2019, section = 7 },
['Pink Terracotta'] = { pos = 772, section = 7 },
['Pink Thing Banner'] = { pos = 2985, section = 2 },
['Pink Tinted Glass'] = { pos = 1310, section = 40 },
['Pink Tinted Glass Pane'] = { pos = 14, section = 40 },
['Pink Tulip'] = { pos = 3435, section = 19 },
['Pink Wood Planks'] = { pos = 255, section = 30 },
['Pink Wool'] = { pos = 1534, section = 7 },
['Pink Wool Revision 2'] = { pos = 775, section = 40 },
Piston = { pos = 3342, section = 13 },
['Piston Head Model'] = { pos = 1316, section = 30 },
['Pitcher Plant'] = { pos = 1212, section = 19 },
['Pitcher Pod'] = { pos = 1213, section = 19 },
['Place Block'] = { pos = 1265, section = 32 },
['Placeholder Texture'] = { pos = 1317, section = 30 },
['Plains Village Map'] = { pos = 1326, section = 25 },
['Plains Village Map BE'] = { pos = 1327, section = 25 },
Platinum = { pos = 1850, section = 34 },
['Player Head'] = { pos = 966, section = 14 },
['Plenty Pottery Sherd'] = { pos = 1232, section = 44 },
Plumbum = { pos = 1826, section = 34 },
Plutonium = { pos = 1851, section = 34 },
Podzol = { pos = 3372, section = 15 },
['Pointed Dripstone'] = { pos = 436, section = 15 },
['Pointed Dripstone BE'] = { pos = 459, section = 15 },
['Poisonous Potato'] = { pos = 3209, section = 10 },
['Polar Bear Spawn Egg'] = { pos = 1375, section = 24 },
['Polished Andesite'] = { pos = 907, section = 12 },
['Polished Andesite Slab'] = { pos = 3288, section = 12 },
['Polished Andesite Stairs'] = { pos = 3289, section = 12 },
['Polished Basalt'] = { pos = 206, section = 12 },
['Polished Blackstone'] = { pos = 274, section = 16 },
['Polished Blackstone Brick Slab'] = { pos = 279, section = 12 },
['Polished Blackstone Brick Stairs'] = { pos = 280, section = 12 },
['Polished Blackstone Brick Wall'] = { pos = 281, section = 12 },
['Polished Blackstone Brick Wall BE'] = { pos = 387, section = 12 },
['Polished Blackstone Bricks'] = { pos = 275, section = 16 },
['Polished Blackstone Button'] = { pos = 285, section = 13 },
['Polished Blackstone Pressure Plate'] = { pos = 286, section = 13 },
['Polished Blackstone Slab'] = { pos = 282, section = 12 },
['Polished Blackstone Stairs'] = { pos = 283, section = 12 },
['Polished Blackstone Wall'] = { pos = 284, section = 12 },
['Polished Blackstone Wall BE'] = { pos = 388, section = 12 },
['Polished Deepslate'] = { pos = 501, section = 12 },
['Polished Deepslate Slab'] = { pos = 504, section = 12 },
['Polished Deepslate Stairs'] = { pos = 505, section = 12 },
['Polished Deepslate Wall'] = { pos = 502, section = 12 },
['Polished Deepslate Wall BE'] = { pos = 562, section = 12 },
['Polished Diorite'] = { pos = 908, section = 12 },
['Polished Diorite Slab'] = { pos = 3290, section = 12 },
['Polished Diorite Stairs'] = { pos = 3291, section = 12 },
['Polished Granite'] = { pos = 909, section = 12 },
['Polished Granite Slab'] = { pos = 2430, section = 12 },
['Polished Granite Stairs'] = { pos = 2431, section = 12 },
Polonium = { pos = 1852, section = 34 },
Polyethylene = { pos = 1922, section = 37 },
['Popped Chorus Fruit'] = { pos = 3524, section = 23 },
Poppy = { pos = 3436, section = 19 },
Portal = { pos = 1011, section = 17 },
Portfolio = { pos = 1594, section = 20 },
['Post transition metal'] = { pos = 74, section = 34 },
Poster = { pos = 1595, section = 20 },
Potassium = { pos = 1822, section = 34 },
['Potassium Chloride'] = { pos = 1915, section = 37 },
['Potassium Iodide'] = { pos = 1890, section = 35 },
Potato = { pos = 3210, section = 10 },
['Potato Revision 1'] = { pos = 128, section = 29 },
['Potato Revision 2'] = { pos = 129, section = 29 },
['Potion of Big'] = { pos = 1282, section = 32 },
['Potion of Decay'] = { pos = 1402, section = 21 },
['Potion of Fire Resistance'] = { pos = 3450, section = 21 },
['Potion of Fire Resistance Revision 1'] = { pos = 294, section = 45 },
['Potion of Harming'] = { pos = 3451, section = 21 },
['Potion of Harming Revision 1'] = { pos = 295, section = 45 },
['Potion of Healing'] = { pos = 3452, section = 21 },
['Potion of Healing Revision 1'] = { pos = 296, section = 45 },
['Potion of Invisibility'] = { pos = 3453, section = 21 },
['Potion of Invisibility Revision 1'] = { pos = 297, section = 45 },
['Potion of Leaping'] = { pos = 3454, section = 21 },
['Potion of Leaping Revision 1'] = { pos = 298, section = 45 },
['Potion of Levitation'] = { pos = 114, section = 21 },
['Potion of Luck'] = { pos = 3455, section = 21 },
['Potion of Luck Revision 1'] = { pos = 299, section = 45 },
['Potion of Night Vision'] = { pos = 3456, section = 21 },
['Potion of Night Vision Revision 1'] = { pos = 300, section = 45 },
['Potion of Poison'] = { pos = 3457, section = 21 },
['Potion of Poison Revision 1'] = { pos = 301, section = 45 },
['Potion of Regeneration'] = { pos = 3458, section = 21 },
['Potion of Regeneration Revision 1'] = { pos = 302, section = 45 },
['Potion of Slow Falling'] = { pos = 3459, section = 21 },
['Potion of Slow Falling Revision 1'] = { pos = 303, section = 45 },
['Potion of Slowness'] = { pos = 3460, section = 21 },
['Potion of Slowness Revision 1'] = { pos = 304, section = 45 },
['Potion of Small'] = { pos = 1283, section = 32 },
['Potion of Strength'] = { pos = 3461, section = 21 },
['Potion of Strength Revision 1'] = { pos = 305, section = 45 },
['Potion of Swiftness'] = { pos = 3462, section = 21 },
['Potion of Swiftness Revision 1'] = { pos = 306, section = 45 },
['Potion of the Turtle Master'] = { pos = 3463, section = 21 },
['Potion of the Turtle Master Revision 1'] = { pos = 307, section = 45 },
['Potion of Water Breathing'] = { pos = 3464, section = 21 },
['Potion of Water Breathing Revision 1'] = { pos = 308, section = 45 },
['Potion of Weakness'] = { pos = 3465, section = 21 },
['Powder Snow'] = { pos = 391, section = 15 },
['Powder Snow Bucket'] = { pos = 434, section = 4 },
['Powered Rail'] = { pos = 3343, section = 13 },
Praseodymium = { pos = 1853, section = 34 },
['Prismarine Brick Slab'] = { pos = 3292, section = 12 },
['Prismarine Brick Stairs'] = { pos = 111, section = 12 },
['Prismarine Brick Stairs Old'] = { pos = 1663, section = 12 },
['Prismarine Bricks'] = { pos = 3373, section = 15 },
['Prismarine Bricks Slab'] = { pos = 1666, section = 12 },
['Prismarine Crystals'] = { pos = 3525, section = 23 },
['Prismarine Shard'] = { pos = 3526, section = 23 },
['Prismarine Wall'] = { pos = 97, section = 12 },
['Prismarine Wall BE'] = { pos = 28, section = 12 },
['Prize Pottery Sherd'] = { pos = 1203, section = 44 },
Promethium = { pos = 1854, section = 34 },
Protactinium = { pos = 1855, section = 34 },
Protoactinium = { pos = 1855, section = 34 },
Pufferfish = { pos = 1692, section = 10 },
['Pufferfish 3DS'] = { pos = 837, section = 10 },
['Pufferfish Revision 2'] = { pos = 837, section = 10 },
['Pufferfish Spawn Egg'] = { pos = 1698, section = 24 },
['Pufferfish Spawn Egg Revision 1'] = { pos = 1969, section = 39 },
Pumpkin = { pos = 3437, section = 19 },
['Pumpkin Pie'] = { pos = 3211, section = 10 },
['Pumpkin Seeds'] = { pos = 1061, section = 19 },
['Purple Balloon'] = { pos = 1943, section = 33 },
['Purple Banner'] = { pos = 776, section = 7 },
['Purple Banner 15w14a'] = { pos = 484, section = 32 },
['Purple Base Banner'] = { pos = 2986, section = 2 },
['Purple Base Dexter Canton Banner'] = { pos = 2987, section = 2 },
['Purple Base Gradient Banner'] = { pos = 2988, section = 2 },
['Purple Base Indented Banner'] = { pos = 2989, section = 2 },
['Purple Base Sinister Canton Banner'] = { pos = 2990, section = 2 },
['Purple Beaker'] = { pos = 1900, section = 35 },
['Purple Bed'] = { pos = 3183, section = 7 },
['Purple Bed BE'] = { pos = 1557, section = 7 },
['Purple Bed LCE'] = { pos = 1557, section = 7 },
['Purple Bend Banner'] = { pos = 2991, section = 2 },
['Purple Bend Sinister Banner'] = { pos = 2992, section = 2 },
['Purple Bordure Banner'] = { pos = 2993, section = 2 },
['Purple Bordure Indented Banner'] = { pos = 2994, section = 2 },
['Purple Candle'] = { pos = 421, section = 7 },
['Purple Carpet'] = { pos = 1633, section = 7 },
['Purple Carpet Revision 1'] = { pos = 777, section = 40 },
['Purple Chevron Banner'] = { pos = 2995, section = 2 },
['Purple Chief Banner'] = { pos = 2996, section = 2 },
['Purple Chief Dexter Canton Banner'] = { pos = 2997, section = 2 },
['Purple Chief Indented Banner'] = { pos = 2998, section = 2 },
['Purple Chief Sinister Canton Banner'] = { pos = 2999, section = 2 },
['Purple Cloth'] = { pos = 241, section = 40 },
['Purple Concrete'] = { pos = 1511, section = 7 },
['Purple Concrete Powder'] = { pos = 1512, section = 7 },
['Purple Creeper Charge Banner'] = { pos = 3000, section = 2 },
['Purple Cross Banner'] = { pos = 3001, section = 2 },
['Purple Dye'] = { pos = 3168, section = 6 },
['Purple Fess Banner'] = { pos = 3002, section = 2 },
['Purple Field Masoned Banner'] = { pos = 3003, section = 2 },
['Purple Firework Star'] = { pos = 818, section = 9 },
['Purple Flask'] = { pos = 1912, section = 36 },
['Purple Flower Charge Banner'] = { pos = 3004, section = 2 },
['Purple Glazed Terracotta'] = { pos = 1513, section = 7 },
['Purple Globe Banner'] = { pos = 48, section = 2 },
['Purple Glow Stick'] = { pos = 2004, section = 33 },
['Purple Gradient Banner'] = { pos = 3005, section = 2 },
['Purple Inverted Chevron Banner'] = { pos = 3006, section = 2 },
['Purple Jar'] = { pos = 1926, section = 37 },
['Purple Lozenge Banner'] = { pos = 3007, section = 2 },
['Purple Pale Banner'] = { pos = 3008, section = 2 },
['Purple Pale Dexter Banner'] = { pos = 3009, section = 2 },
['Purple Pale Sinister Banner'] = { pos = 3010, section = 2 },
['Purple Paly Banner'] = { pos = 3011, section = 2 },
['Purple Per Bend Banner'] = { pos = 3012, section = 2 },
['Purple Per Bend Inverted Banner'] = { pos = 3013, section = 2 },
['Purple Per Bend Sinister Banner'] = { pos = 3014, section = 2 },
['Purple Per Bend Sinister Inverted Banner'] = { pos = 3015, section = 2 },
['Purple Per Fess Banner'] = { pos = 3016, section = 2 },
['Purple Per Fess Inverted Banner'] = { pos = 3017, section = 2 },
['Purple Per Pale Banner'] = { pos = 3018, section = 2 },
['Purple Per Pale Inverted Banner'] = { pos = 3019, section = 2 },
['Purple Piglin Banner'] = { pos = 371, section = 2 },
['Purple Roundel Banner'] = { pos = 3020, section = 2 },
['Purple Saltire Banner'] = { pos = 3021, section = 2 },
['Purple Shield'] = { pos = 2525, section = 1 },
['Purple Shulker Box'] = { pos = 1428, section = 7 },
['Purple Skull Charge Banner'] = { pos = 3022, section = 2 },
['Purple Snout Banner'] = { pos = 371, section = 2 },
['Purple Sparkler'] = { pos = 1760, section = 33 },
['Purple Sparkler (active)'] = { pos = 1761, section = 33 },
['Purple Stained Glass'] = { pos = 779, section = 7 },
['Purple Stained Glass Pane'] = { pos = 780, section = 7 },
['Purple Stained Glass Pane BE'] = { pos = 2020, section = 7 },
['Purple Terracotta'] = { pos = 778, section = 7 },
['Purple Thing Banner'] = { pos = 3023, section = 2 },
['Purple Tinted Glass'] = { pos = 1311, section = 40 },
['Purple Tinted Glass Pane'] = { pos = 15, section = 40 },
['Purple Torch'] = { pos = 1762, section = 33 },
['Purple Wood Planks'] = { pos = 256, section = 30 },
['Purple Wool'] = { pos = 1535, section = 7 },
['Purple Wool Revision 2'] = { pos = 781, section = 40 },
['Purpur Block'] = { pos = 910, section = 12 },
['Purpur Pillar'] = { pos = 911, section = 12 },
['Purpur Slab'] = { pos = 3293, section = 12 },
['Purpur Stairs'] = { pos = 3294, section = 12 },
['Quartz Bricks'] = { pos = 288, section = 12 },
['Quartz Pillar'] = { pos = 906, section = 12 },
['Quartz Slab'] = { pos = 3295, section = 12 },
['Quartz Stairs'] = { pos = 3296, section = 12 },
['Quartz Trim Chainmail Boots'] = { pos = 1096, section = 43 },
['Quartz Trim Chainmail Chestplate'] = { pos = 1098, section = 43 },
['Quartz Trim Chainmail Helmet'] = { pos = 1099, section = 43 },
['Quartz Trim Chainmail Leggings'] = { pos = 1101, section = 43 },
['Quartz Trim Diamond Boots'] = { pos = 1102, section = 43 },
['Quartz Trim Diamond Chestplate'] = { pos = 1103, section = 43 },
['Quartz Trim Diamond Helmet'] = { pos = 1104, section = 43 },
['Quartz Trim Diamond Leggings'] = { pos = 1105, section = 43 },
['Quartz Trim Golden Boots'] = { pos = 1106, section = 43 },
['Quartz Trim Golden Chestplate'] = { pos = 1107, section = 43 },
['Quartz Trim Golden Helmet'] = { pos = 1108, section = 43 },
['Quartz Trim Golden Leggings'] = { pos = 1109, section = 43 },
['Quartz Trim Iron Boots'] = { pos = 1110, section = 43 },
['Quartz Trim Iron Chestplate'] = { pos = 1111, section = 43 },
['Quartz Trim Iron Helmet'] = { pos = 1112, section = 43 },
['Quartz Trim Iron Leggings'] = { pos = 1113, section = 43 },
['Quartz Trim Leather Boots'] = { pos = 1114, section = 43 },
['Quartz Trim Leather Cap'] = { pos = 1115, section = 43 },
['Quartz Trim Leather Pants'] = { pos = 1116, section = 43 },
['Quartz Trim Leather Tunic'] = { pos = 1117, section = 43 },
['Quartz Trim Netherite Boots'] = { pos = 1118, section = 43 },
['Quartz Trim Netherite Chestplate'] = { pos = 1120, section = 43 },
['Quartz Trim Netherite Helmet'] = { pos = 1121, section = 43 },
['Quartz Trim Netherite Leggings'] = { pos = 1122, section = 43 },
['Quartz Trim Turtle Shell'] = { pos = 1123, section = 43 },
Quiver = { pos = 2088, section = 30 },
['Rabbit Hide'] = { pos = 3527, section = 23 },
['Rabbit Spawn Egg'] = { pos = 1157, section = 24 },
['Rabbit Stew'] = { pos = 3212, section = 10 },
["Rabbit's Foot"] = { pos = 3144, section = 3 },
Radium = { pos = 1856, section = 34 },
Radon = { pos = 1857, section = 34 },
Rail = { pos = 3344, section = 13 },
['Rainbow Bed'] = { pos = 3646, section = 38 },
['Rainbow Carpet'] = { pos = 3647, section = 38 },
['Rainbow Wool'] = { pos = 3648, section = 38 },
['Raiser Armor Trim'] = { pos = 1215, section = 41 },
['Raiser Armor Trim Smithing Template'] = { pos = 1215, section = 41 },
['Ravager Spawn Egg'] = { pos = 2411, section = 24 },
['Raw Beef'] = { pos = 3213, section = 10 },
['Raw Chicken'] = { pos = 3214, section = 10 },
['Raw Cod'] = { pos = 1693, section = 10 },
['Raw Copper'] = { pos = 542, section = 23 },
['Raw Fish'] = { pos = 842, section = 10 },
['Raw Fish Revision 1'] = { pos = 842, section = 10 },
['Raw Gold'] = { pos = 543, section = 23 },
['Raw Iron'] = { pos = 544, section = 23 },
['Raw Mutton'] = { pos = 3215, section = 10 },
['Raw Porkchop'] = { pos = 3216, section = 10 },
['Raw Rabbit'] = { pos = 3217, section = 10 },
['Raw Salmon'] = { pos = 1694, section = 10 },
['Raw Salmon 3DS'] = { pos = 846, section = 10 },
['Raw Salmon Revision 1'] = { pos = 846, section = 10 },
['Reality Vision'] = { pos = 1638, section = 32 },
['Recipe Book'] = { pos = 385, section = 30 },
['Recovery Compass'] = { pos = 623, section = 25 },
['Red Balloon'] = { pos = 1944, section = 33 },
['Red Banner'] = { pos = 782, section = 7 },
['Red Banner 15w14a'] = { pos = 485, section = 32 },
['Red Base Banner'] = { pos = 3024, section = 2 },
['Red Base Dexter Canton Banner'] = { pos = 3025, section = 2 },
['Red Base Gradient Banner'] = { pos = 3026, section = 2 },
['Red Base Indented Banner'] = { pos = 3027, section = 2 },
['Red Base Sinister Canton Banner'] = { pos = 3028, section = 2 },
['Red Beaker'] = { pos = 1901, section = 35 },
['Red Bed'] = { pos = 3184, section = 7 },
['Red Bed BE'] = { pos = 1558, section = 7 },
['Red Bed LCE'] = { pos = 1558, section = 7 },
['Red Bed Revision 1'] = { pos = 1558, section = 7 },
['Red Bend Banner'] = { pos = 3029, section = 2 },
['Red Bend Sinister Banner'] = { pos = 3030, section = 2 },
['Red Bordure Banner'] = { pos = 3032, section = 2 },
['Red Bordure Indented Banner'] = { pos = 3031, section = 2 },
['Red Candle'] = { pos = 422, section = 7 },
['Red Carpet'] = { pos = 1634, section = 7 },
['Red Carpet Revision 1'] = { pos = 783, section = 40 },
['Red Chevron Banner'] = { pos = 3033, section = 2 },
['Red Chief Banner'] = { pos = 3034, section = 2 },
['Red Chief Dexter Canton Banner'] = { pos = 3035, section = 2 },
['Red Chief Indented Banner'] = { pos = 3036, section = 2 },
['Red Chief Sinister Canton Banner'] = { pos = 3037, section = 2 },
['Red Cloth'] = { pos = 239, section = 40 },
['Red Concrete'] = { pos = 1514, section = 7 },
['Red Concrete Powder'] = { pos = 1515, section = 7 },
['Red Creeper Charge Banner'] = { pos = 3038, section = 2 },
['Red Cross Banner'] = { pos = 3039, section = 2 },
['Red Dye'] = { pos = 3169, section = 6 },
['Red Fess Banner'] = { pos = 3040, section = 2 },
['Red Field Masoned Banner'] = { pos = 3041, section = 2 },
['Red Firework Star'] = { pos = 819, section = 9 },
['Red Flask'] = { pos = 1913, section = 36 },
['Red Flower Charge Banner'] = { pos = 3042, section = 2 },
['Red Glazed Terracotta'] = { pos = 1516, section = 7 },
['Red Globe Banner'] = { pos = 49, section = 2 },
['Red Glow Stick'] = { pos = 2005, section = 33 },
['Red Gradient Banner'] = { pos = 3043, section = 2 },
['Red Inverted Chevron Banner'] = { pos = 3044, section = 2 },
['Red Jar'] = { pos = 1927, section = 37 },
['Red Key'] = { pos = 452, section = 32 },
['Red Lozenge Banner'] = { pos = 3045, section = 2 },
['Red Mushroom'] = { pos = 3439, section = 19 },
['Red Mushroom Block'] = { pos = 3438, section = 19 },
['Red Nether Brick Slab'] = { pos = 3297, section = 12 },
['Red Nether Brick Stairs'] = { pos = 3298, section = 12 },
['Red Nether Brick Wall'] = { pos = 3299, section = 12 },
['Red Nether Brick Wall BE'] = { pos = 30, section = 12 },
['Red Nether Bricks'] = { pos = 1367, section = 12 },
['Red Pale Banner'] = { pos = 3046, section = 2 },
['Red Pale Dexter Banner'] = { pos = 3047, section = 2 },
['Red Pale Sinister Banner'] = { pos = 3048, section = 2 },
['Red Paly Banner'] = { pos = 3049, section = 2 },
['Red Per Bend Banner'] = { pos = 3050, section = 2 },
['Red Per Bend Inverted Banner'] = { pos = 3051, section = 2 },
['Red Per Bend Sinister Banner'] = { pos = 3052, section = 2 },
['Red Per Bend Sinister Inverted Banner'] = { pos = 3053, section = 2 },
['Red Per Fess Banner'] = { pos = 3054, section = 2 },
['Red Per Fess Inverted Banner'] = { pos = 3055, section = 2 },
['Red Per Pale Banner'] = { pos = 3056, section = 2 },
['Red Per Pale Inverted Banner'] = { pos = 3057, section = 2 },
['Red Piglin Banner'] = { pos = 372, section = 2 },
['Red Roundel Banner'] = { pos = 3058, section = 2 },
['Red Saltire Banner'] = { pos = 3059, section = 2 },
['Red Sand'] = { pos = 3374, section = 15 },
['Red Sandstone'] = { pos = 3375, section = 15 },
['Red Sandstone Slab'] = { pos = 3300, section = 12 },
['Red Sandstone Stairs'] = { pos = 3301, section = 12 },
['Red Sandstone Wall'] = { pos = 3302, section = 12 },
['Red Sandstone Wall BE'] = { pos = 31, section = 12 },
['Red Shield'] = { pos = 2526, section = 1 },
['Red Shulker Box'] = { pos = 1616, section = 7 },
['Red Shulker Box Revision 1'] = { pos = 1429, section = 40 },
['Red Skull Charge Banner'] = { pos = 3060, section = 2 },
['Red Snout Banner'] = { pos = 372, section = 2 },
['Red Sparkler'] = { pos = 1763, section = 33 },
['Red Sparkler (active)'] = { pos = 1764, section = 33 },
['Red Stained Glass'] = { pos = 785, section = 7 },
['Red Stained Glass Pane'] = { pos = 786, section = 7 },
['Red Stained Glass Pane BE'] = { pos = 2021, section = 7 },
['Red Terracotta'] = { pos = 784, section = 7 },
['Red Thing Banner'] = { pos = 3061, section = 2 },
['Red Tinted Glass'] = { pos = 1312, section = 40 },
['Red Tinted Glass Pane'] = { pos = 16, section = 40 },
['Red Torch'] = { pos = 1765, section = 33 },
['Red Tulip'] = { pos = 3440, section = 19 },
['Red Wood Planks'] = { pos = 257, section = 30 },
['Red Wool'] = { pos = 1536, section = 7 },
['Red Wool Revision 2'] = { pos = 787, section = 40 },
Redstone = { pos = 3528, section = 23 },
['Redstone Comparator'] = { pos = 3345, section = 13 },
['Redstone Dust'] = { pos = 3528, section = 23 },
['Redstone Lamp'] = { pos = 3346, section = 13 },
['Redstone Lamp Post-Flip'] = { pos = 381, section = 29 },
['Redstone Ore'] = { pos = 3397, section = 18 },
['Redstone Repeater'] = { pos = 3347, section = 13 },
['Redstone Revision 1'] = { pos = 1138, section = 29 },
['Redstone Torch'] = { pos = 3348, section = 13 },
['Redstone Trim Chainmail Boots'] = { pos = 1124, section = 43 },
['Redstone Trim Chainmail Chestplate'] = { pos = 1125, section = 43 },
['Redstone Trim Chainmail Helmet'] = { pos = 1126, section = 43 },
['Redstone Trim Chainmail Leggings'] = { pos = 1127, section = 43 },
['Redstone Trim Diamond Boots'] = { pos = 1128, section = 43 },
['Redstone Trim Diamond Chestplate'] = { pos = 1129, section = 43 },
['Redstone Trim Diamond Helmet'] = { pos = 1130, section = 43 },
['Redstone Trim Diamond Leggings'] = { pos = 1131, section = 43 },
['Redstone Trim Golden Boots'] = { pos = 1132, section = 43 },
['Redstone Trim Golden Chestplate'] = { pos = 1133, section = 43 },
['Redstone Trim Golden Helmet'] = { pos = 1134, section = 43 },
['Redstone Trim Golden Leggings'] = { pos = 1135, section = 43 },
['Redstone Trim Iron Boots'] = { pos = 1136, section = 43 },
['Redstone Trim Iron Chestplate'] = { pos = 1137, section = 43 },
['Redstone Trim Iron Helmet'] = { pos = 1139, section = 43 },
['Redstone Trim Iron Leggings'] = { pos = 1141, section = 43 },
['Redstone Trim Leather Boots'] = { pos = 1170, section = 43 },
['Redstone Trim Leather Cap'] = { pos = 1171, section = 43 },
['Redstone Trim Leather Pants'] = { pos = 1172, section = 43 },
['Redstone Trim Leather Tunic'] = { pos = 1173, section = 43 },
['Redstone Trim Netherite Boots'] = { pos = 1174, section = 43 },
['Redstone Trim Netherite Chestplate'] = { pos = 1175, section = 43 },
['Redstone Trim Netherite Helmet'] = { pos = 1176, section = 43 },
['Redstone Trim Netherite Leggings'] = { pos = 1177, section = 43 },
['Redstone Trim Turtle Shell'] = { pos = 1178, section = 43 },
['Reinforced Deepslate'] = { pos = 582, section = 5 },
['Respawn Anchor'] = { pos = 207, section = 12 },
Rhenium = { pos = 1858, section = 34 },
Rhodium = { pos = 1859, section = 34 },
['Rib Armor Trim'] = { pos = 802, section = 41 },
['Rib Armor Trim Smithing Template'] = { pos = 802, section = 41 },
['Right Curly'] = { pos = 1284, section = 32 },
['Right Square'] = { pos = 1285, section = 32 },
Roentgenium = { pos = 1860, section = 34 },
['Rooted Dirt'] = { pos = 463, section = 15 },
Rose = { pos = 1065, section = 29 },
['Rose BE'] = { pos = 1079, section = 29 },
['Rose Bush'] = { pos = 3441, section = 19 },
['Rose Bush 3DS'] = { pos = 1573, section = 29 },
['Rose Bush BE Revision 2'] = { pos = 1573, section = 29 },
['Rose Bush LCE Revision 2'] = { pos = 1573, section = 29 },
['Rose Cloth'] = { pos = 237, section = 40 },
['Rose Red'] = { pos = 703, section = 6 },
['Rotten Flesh'] = { pos = 3218, section = 10 },
Rubidium = { pos = 1861, section = 34 },
Ruby = { pos = 1313, section = 29 },
['Ruby Ore'] = { pos = 2242, section = 29 },
Ruthenium = { pos = 1862, section = 34 },
Rutherfordium = { pos = 1863, section = 34 },
Saddle = { pos = 3582, section = 25 },
['Salmon Spawn Egg'] = { pos = 1699, section = 24 },
['Salmon Spawn Egg Revision 1'] = { pos = 1970, section = 39 },
Salt = { pos = 1766, section = 33 },
Samarium = { pos = 1864, section = 34 },
Sand = { pos = 3376, section = 15 },
Sandstone = { pos = 3377, section = 15 },
['Sandstone Slab'] = { pos = 3303, section = 12 },
['Sandstone Stairs'] = { pos = 3304, section = 12 },
['Sandstone Stairs Left'] = { pos = 2262, section = 42 },
['Sandstone Wall'] = { pos = 3305, section = 12 },
['Sandstone Wall BE'] = { pos = 32, section = 12 },
['Savanna Village Map'] = { pos = 1326, section = 25 },
['Savanna Village Map BE'] = { pos = 1327, section = 25 },
Scaffolding = { pos = 2414, section = 12 },
['Scaffolding BE'] = { pos = 1068, section = 12 },
Scandium = { pos = 1865, section = 34 },
Sculk = { pos = 556, section = 15 },
['Sculk Block'] = { pos = 556, section = 15 },
['Sculk Catalyst'] = { pos = 557, section = 15 },
['Sculk Catalyst BE'] = { pos = 628, section = 15 },
['Sculk Sensor'] = { pos = 439, section = 13 },
['Sculk Sensor BE'] = { pos = 458, section = 13 },
['Sculk Shrieker'] = { pos = 613, section = 15 },
['Sculk Shrieker BE'] = { pos = 558, section = 15 },
['Sculk Vein'] = { pos = 559, section = 15 },
Scute = { pos = 1684, section = 23 },
['Sea Lantern BE'] = { pos = 209, section = 15 },
['Sea Pickle'] = { pos = 1736, section = 19 },
Seaborgium = { pos = 1866, section = 34 },
Seagrass = { pos = 2029, section = 19 },
Seeds = { pos = 1067, section = 19 },
Selenium = { pos = 1867, section = 34 },
['Sentry Armor Trim'] = { pos = 803, section = 41 },
['Sentry Armor Trim Smithing Template'] = { pos = 803, section = 41 },
['Shaper Armor Trim'] = { pos = 1216, section = 41 },
['Shaper Armor Trim Smithing Template'] = { pos = 1216, section = 41 },
['Sheaf Pottery Sherd'] = { pos = 1233, section = 44 },
Shears = { pos = 3583, section = 25 },
['Sheep Spawn Egg'] = { pos = 1158, section = 24 },
['Sheep Spawn Egg Revision 1'] = { pos = 1392, section = 39 },
['Shelter Pottery Sherd'] = { pos = 1234, section = 44 },
Shield = { pos = 2527, section = 1 },
['Short Tag'] = { pos = 1286, section = 32 },
Shroomlight = { pos = 151, section = 16 },
['Shroomlight BE'] = { pos = 211, section = 16 },
['Shrub LCE'] = { pos = 1039, section = 19 },
['Shulker Box'] = { pos = 1615, section = 7 },
['Shulker Shell'] = { pos = 3529, section = 23 },
['Shulker Spawn Egg'] = { pos = 1159, section = 24 },
['Shulker Spawn Egg Revision 1'] = { pos = 1564, section = 39 },
['Sign Revision 1'] = { pos = 354, section = 29 },
['Silence Armor Trim'] = { pos = 1217, section = 41 },
['Silence Armor Trim Smithing Template'] = { pos = 1217, section = 41 },
Silicon = { pos = 1868, section = 34 },
Silver = { pos = 1775, section = 34 },
['Silver Balloon'] = { pos = 1945, section = 33 },
['Silverfish Spawn Egg'] = { pos = 1160, section = 24 },
['Silverfish Spawn Egg Revision 1'] = { pos = 1393, section = 39 },
['Silverfish Spawn Egg Revision 2'] = { pos = 1565, section = 39 },
['Skeleton Horse Spawn Egg'] = { pos = 1376, section = 24 },
['Skeleton Skull'] = { pos = 967, section = 14 },
['Skeleton Skull BE'] = { pos = 218, section = 14 },
['Skeleton Spawn Egg'] = { pos = 1161, section = 24 },
['Skeleton Spawn Egg Revision 1'] = { pos = 1394, section = 39 },
['Skull Pottery Sherd'] = { pos = 1204, section = 44 },
Slate = { pos = 1596, section = 20 },
['Slightly Damaged Anvil'] = { pos = 1253, section = 26 },
['Slime Block'] = { pos = 920, section = 12 },
['Slime Spawn Egg'] = { pos = 1162, section = 24 },
['Slime Spawn Egg Revision 1'] = { pos = 1395, section = 39 },
Slimeball = { pos = 3530, section = 23 },
['Small Amethyst Bud'] = { pos = 427, section = 15 },
['Small Dripleaf'] = { pos = 470, section = 19 },
['Smarter Watch'] = { pos = 1639, section = 32 },
['Smithing Table'] = { pos = 2454, section = 26 },
['Smithing Table Revision 1'] = { pos = 2447, section = 26 },
['Smithing Template'] = { pos = 801, section = 41 },
Smoker = { pos = 2448, section = 26 },
['Smooth Basalt'] = { pos = 519, section = 15 },
['Smooth Quartz'] = { pos = 867, section = 12 },
['Smooth Quartz Block'] = { pos = 867, section = 12 },
['Smooth Quartz Slab'] = { pos = 3306, section = 12 },
['Smooth Quartz Stairs'] = { pos = 3307, section = 12 },
['Smooth Red Sandstone'] = { pos = 3310, section = 12 },
['Smooth Red Sandstone Slab'] = { pos = 3308, section = 12 },
['Smooth Red Sandstone Stairs'] = { pos = 3309, section = 12 },
['Smooth Sandstone'] = { pos = 3313, section = 12 },
['Smooth Sandstone Slab'] = { pos = 3311, section = 12 },
['Smooth Sandstone Stairs'] = { pos = 3312, section = 12 },
['Smooth Stone'] = { pos = 923, section = 12 },
['Smooth Stone Bricks'] = { pos = 3380, section = 15 },
['Smooth Stone Slab'] = { pos = 3314, section = 12 },
['Sniffer Egg'] = { pos = 1211, section = 5 },
['Sniffer Spawn Egg'] = { pos = 1205, section = 24 },
['Snort Pottery Sherd'] = { pos = 1236, section = 44 },
['Snout Armor Trim'] = { pos = 808, section = 41 },
['Snout Armor Trim Smithing Template'] = { pos = 808, section = 41 },
Snow = { pos = 3378, section = 15 },
['Snow Block'] = { pos = 3315, section = 12 },
['Snow Golem Spawn Egg'] = { pos = 697, section = 24 },
Snowball = { pos = 3638, section = 28 },
['Snowy Village Map'] = { pos = 1326, section = 25 },
['Snowy Village Map BE'] = { pos = 1327, section = 25 },
Soap = { pos = 1915, section = 37 },
Sodium = { pos = 1836, section = 34 },
['Sodium Acetate'] = { pos = 1915, section = 37 },
['Sodium Fluoride'] = { pos = 1897, section = 35 },
['Sodium Hydride'] = { pos = 1923, section = 37 },
['Sodium Hypochlorite'] = { pos = 1889, section = 35 },
['Sodium Oxide'] = { pos = 1915, section = 37 },
['Soul Campfire'] = { pos = 287, section = 26 },
['Soul Fire Lantern Revision 1'] = { pos = 195, section = 29 },
['Soul Lantern'] = { pos = 157, section = 26 },
['Soul Sand'] = { pos = 3388, section = 16 },
['Soul Soil'] = { pos = 152, section = 16 },
['Soul Torch'] = { pos = 156, section = 17 },
['Spawn Agent'] = { pos = 2379, section = 24 },
['Spawn Allay'] = { pos = 901, section = 24 },
['Spawn Axolotl'] = { pos = 440, section = 24 },
['Spawn Bat'] = { pos = 1142, section = 24 },
['Spawn Bee'] = { pos = 104, section = 24 },
['Spawn Blaze'] = { pos = 1143, section = 24 },
['Spawn Camel'] = { pos = 683, section = 24 },
['Spawn Cat'] = { pos = 2380, section = 24 },
['Spawn Cat BE'] = { pos = 2380, section = 24 },
['Spawn Cave Spider'] = { pos = 1144, section = 24 },
['Spawn Chicken'] = { pos = 1145, section = 24 },
['Spawn Cod'] = { pos = 1697, section = 24 },
['Spawn Cow'] = { pos = 1146, section = 24 },
['Spawn Creeper'] = { pos = 1147, section = 24 },
['Spawn Dolphin'] = { pos = 1967, section = 24 },
['Spawn Donkey'] = { pos = 1371, section = 24 },
['Spawn Drowned'] = { pos = 1727, section = 24 },
['Spawn Egg'] = { pos = 2361, section = 39 },
['Spawn Elder Guardian'] = { pos = 1372, section = 24 },
['Spawn Ender Dragon'] = { pos = 695, section = 24 },
['Spawn Enderman'] = { pos = 1148, section = 24 },
['Spawn Endermite'] = { pos = 1149, section = 24 },
['Spawn Evoker'] = { pos = 1411, section = 24 },
['Spawn Firefly'] = { pos = 632, section = 24 },
['Spawn Fox'] = { pos = 2464, section = 24 },
['Spawn Frog'] = { pos = 575, section = 24 },
['Spawn Ghast'] = { pos = 1150, section = 24 },
['Spawn Glow Squid'] = { pos = 457, section = 24 },
['Spawn Goat'] = { pos = 392, section = 24 },
['Spawn Guardian'] = { pos = 1151, section = 24 },
['Spawn Hoglin'] = { pos = 194, section = 24 },
['Spawn Horse'] = { pos = 1152, section = 24 },
['Spawn Husk'] = { pos = 1373, section = 24 },
['Spawn Iron Golem'] = { pos = 696, section = 24 },
['Spawn Llama'] = { pos = 1412, section = 24 },
['Spawn Magma Cube'] = { pos = 1153, section = 24 },
['Spawn Mask'] = { pos = 2381, section = 24 },
['Spawn Mooshroom'] = { pos = 1154, section = 24 },
['Spawn Mule'] = { pos = 1374, section = 24 },
['Spawn NPC'] = { pos = 1590, section = 24 },
['Spawn Ocelot'] = { pos = 1155, section = 24 },
['Spawn Panda'] = { pos = 2374, section = 24 },
['Spawn Panda BE'] = { pos = 2374, section = 24 },
['Spawn Parrot'] = { pos = 1544, section = 24 },
['Spawn Phantom'] = { pos = 1974, section = 24 },
['Spawn Pig'] = { pos = 1156, section = 24 },
['Spawn Piglin Brute'] = { pos = 262, section = 24 },
['Spawn Pillager'] = { pos = 2413, section = 24 },
['Spawn Polar Bear'] = { pos = 1375, section = 24 },
['Spawn Pufferfish'] = { pos = 1698, section = 24 },
['Spawn Rabbit'] = { pos = 1157, section = 24 },
['Spawn Ravager'] = { pos = 2411, section = 24 },
['Spawn Salmon'] = { pos = 1699, section = 24 },
['Spawn Sheep'] = { pos = 1158, section = 24 },
['Spawn Shulker'] = { pos = 1159, section = 24 },
['Spawn Silverfish'] = { pos = 1160, section = 24 },
['Spawn Skeleton'] = { pos = 1161, section = 24 },
['Spawn Skeleton Horse'] = { pos = 1376, section = 24 },
['Spawn Slime'] = { pos = 1162, section = 24 },
['Spawn Snow Golem'] = { pos = 697, section = 24 },
['Spawn Spider'] = { pos = 1163, section = 24 },
['Spawn Squid'] = { pos = 1164, section = 24 },
['Spawn Stray'] = { pos = 1377, section = 24 },
['Spawn Strider'] = { pos = 223, section = 24 },
['Spawn Tadpole'] = { pos = 576, section = 24 },
['Spawn Trader Llama'] = { pos = 2462, section = 24 },
['Spawn Tropical Fish'] = { pos = 1722, section = 24 },
['Spawn Turtle'] = { pos = 1729, section = 24 },
['Spawn Vex'] = { pos = 1413, section = 24 },
['Spawn Villager'] = { pos = 1165, section = 24 },
['Spawn Vindicator'] = { pos = 1414, section = 24 },
['Spawn Wandering Trader'] = { pos = 389, section = 24 },
['Spawn Wandering Trader BE'] = { pos = 389, section = 24 },
['Spawn Warden'] = { pos = 581, section = 24 },
['Spawn Witch'] = { pos = 1166, section = 24 },
['Spawn Wither Skeleton'] = { pos = 1378, section = 24 },
['Spawn Wolf'] = { pos = 1167, section = 24 },
['Spawn Zoglin'] = { pos = 268, section = 24 },
['Spawn Zombie'] = { pos = 1168, section = 24 },
['Spawn Zombie Horse'] = { pos = 1379, section = 24 },
['Spawn Zombie Pigman'] = { pos = 1169, section = 24 },
['Spawn Zombie Villager'] = { pos = 1349, section = 24 },
Spawner = { pos = 985, section = 15 },
['Spectral Arrow'] = { pos = 3639, section = 28 },
['Spectral Arrow Revision 1'] = { pos = 1291, section = 28 },
['Spider Eye'] = { pos = 3145, section = 3 },
['Spider Spawn Egg'] = { pos = 1163, section = 24 },
['Spider Spawn Egg Revision 1'] = { pos = 1396, section = 39 },
['Spire Armor Trim'] = { pos = 822, section = 41 },
['Spire Armor Trim Smithing Template'] = { pos = 822, section = 41 },
['Splash Awkward Potion Revision 1'] = { pos = 332, section = 47 },
['Splash Bottle of Mob'] = { pos = 1287, section = 32 },
['Splash Mundane Potion'] = { pos = 1100, section = 22 },
['Splash Mundane Potion Revision 1'] = { pos = 333, section = 47 },
['Splash Potion of Big'] = { pos = 1288, section = 32 },
['Splash Potion of Decay'] = { pos = 1404, section = 22 },
['Splash Potion of Fire Resistance'] = { pos = 3468, section = 22 },
['Splash Potion of Fire Resistance Revision 1'] = { pos = 334, section = 47 },
['Splash Potion of Harming'] = { pos = 3469, section = 22 },
['Splash Potion of Harming Revision 1'] = { pos = 335, section = 47 },
['Splash Potion of Healing'] = { pos = 3470, section = 22 },
['Splash Potion of Healing Revision 1'] = { pos = 336, section = 47 },
['Splash Potion of Invisibility'] = { pos = 3471, section = 22 },
['Splash Potion of Invisibility Revision 1'] = { pos = 337, section = 47 },
['Splash Potion of Leaping'] = { pos = 3472, section = 22 },
['Splash Potion of Leaping Revision 1'] = { pos = 338, section = 47 },
['Splash Potion of Levitation'] = { pos = 115, section = 22 },
['Splash Potion of Luck'] = { pos = 3473, section = 22 },
['Splash Potion of Luck Revision 1'] = { pos = 339, section = 47 },
['Splash Potion of Night Vision'] = { pos = 3474, section = 22 },
['Splash Potion of Night Vision Revision 1'] = { pos = 340, section = 47 },
['Splash Potion of Poison'] = { pos = 3475, section = 22 },
['Splash Potion of Poison Revision 1'] = { pos = 341, section = 47 },
['Splash Potion of Regeneration'] = { pos = 3476, section = 22 },
['Splash Potion of Regeneration Revision 1'] = { pos = 342, section = 47 },
['Splash Potion of Slow Falling'] = { pos = 3477, section = 22 },
['Splash Potion of Slow Falling Revision 1'] = { pos = 343, section = 47 },
['Splash Potion of Slowness'] = { pos = 3478, section = 22 },
['Splash Potion of Slowness Revision 1'] = { pos = 344, section = 47 },
['Splash Potion of Small'] = { pos = 1289, section = 32 },
['Splash Potion of Strength'] = { pos = 3479, section = 22 },
['Splash Potion of Strength Revision 1'] = { pos = 345, section = 47 },
['Splash Potion of Swiftness'] = { pos = 3480, section = 22 },
['Splash Potion of Swiftness Revision 1'] = { pos = 346, section = 47 },
['Splash Potion of the Turtle Master'] = { pos = 3481, section = 22 },
['Splash Potion of the Turtle Master Revision 1'] = { pos = 347, section = 47 },
['Splash Potion of Water Breathing'] = { pos = 3467, section = 22 },
['Splash Potion of Water Breathing Revision 1'] = { pos = 348, section = 47 },
['Splash Potion of Weakness'] = { pos = 3482, section = 22 },
['Splash Thick Potion Revision 1'] = { pos = 349, section = 47 },
['Splash Uncraftable Potion Revision 1'] = { pos = 350, section = 47 },
['Splash Water Bottle'] = { pos = 1100, section = 22 },
['Splash Water Bottle Revision 1'] = { pos = 351, section = 47 },
Sponge = { pos = 3613, section = 26 },
['Sponge Revision 1'] = { pos = 2243, section = 29 },
['Spore Blossom'] = { pos = 471, section = 19 },
['Spring Green Cloth'] = { pos = 240, section = 40 },
['Spruce Boat'] = { pos = 634, section = 27 },
['Spruce Boat Revision 2'] = { pos = 3629, section = 29 },
['Spruce Boat with Chest'] = { pos = 619, section = 27 },
['Spruce Boat with Chest BE Revision 1'] = { pos = 617, section = 29 },
['Spruce Button'] = { pos = 3349, section = 13 },
['Spruce Door'] = { pos = 572, section = 13 },
['Spruce Door Revision 3'] = { pos = 954, section = 13 },
['Spruce Fence'] = { pos = 642, section = 12 },
['Spruce Fence BE'] = { pos = 3317, section = 12 },
['Spruce Fence Gate'] = { pos = 3316, section = 13 },
['Spruce Fence Gate BE'] = { pos = 57, section = 13 },
['Spruce Hanging Sign'] = { pos = 660, section = 5 },
['Spruce Leaves'] = { pos = 3442, section = 19 },
['Spruce Log'] = { pos = 3443, section = 19 },
['Spruce Log Revision 1'] = { pos = 2244, section = 29 },
['Spruce Planks'] = { pos = 929, section = 12 },
['Spruce Pressure Plate'] = { pos = 3350, section = 13 },
['Spruce Sapling'] = { pos = 3444, section = 19 },
['Spruce Sign'] = { pos = 2394, section = 17 },
['Spruce Slab'] = { pos = 3318, section = 12 },
['Spruce Stairs'] = { pos = 3319, section = 12 },
['Spruce Stairs Left'] = { pos = 2263, section = 42 },
['Spruce Trapdoor'] = { pos = 1647, section = 13 },
['Spruce Wood'] = { pos = 3320, section = 12 },
['Spruce Wood Button'] = { pos = 3349, section = 13 },
['Spruce Wood Door'] = { pos = 572, section = 13 },
['Spruce Wood Fence'] = { pos = 642, section = 12 },
['Spruce Wood Fence Gate'] = { pos = 3316, section = 13 },
['Spruce Wood Planks'] = { pos = 929, section = 12 },
['Spruce Wood Pressure Plate'] = { pos = 3350, section = 13 },
['Spruce Wood Sign'] = { pos = 2394, section = 17 },
['Spruce Wood Slab'] = { pos = 3318, section = 12 },
['Spruce Wood Stairs'] = { pos = 3319, section = 12 },
['Spruce Wood Trapdoor'] = { pos = 1647, section = 13 },
Spyglass = { pos = 428, section = 25 },
['Squid Spawn Egg'] = { pos = 1164, section = 24 },
['Squid Spawn Egg Revision 1'] = { pos = 1397, section = 39 },
['Sssyntax Error'] = { pos = 1290, section = 32 },
Stannum = { pos = 1869, section = 34 },
Steak = { pos = 848, section = 10 },
Stibium = { pos = 1774, section = 34 },
Stick = { pos = 1140, section = 23 },
['Sticky Piston'] = { pos = 3351, section = 13 },
['Still Lava'] = { pos = 2119, section = 29 },
Stone = { pos = 1000, section = 15 },
['Stone Axe'] = { pos = 3584, section = 25 },
['Stone Brick Slab'] = { pos = 933, section = 12 },
['Stone Brick Stairs'] = { pos = 3322, section = 12 },
['Stone Brick Stairs Left'] = { pos = 2264, section = 42 },
['Stone Brick Wall'] = { pos = 3323, section = 12 },
['Stone Brick Wall BE'] = { pos = 33, section = 12 },
['Stone Bricks'] = { pos = 3380, section = 15 },
['Stone Bricks Monster Egg'] = { pos = 3380, section = 15 },
['Stone Button'] = { pos = 3352, section = 13 },
['Stone Heart'] = { pos = 121, section = 32 },
['Stone Hoe'] = { pos = 3585, section = 25 },
['Stone Monster Egg'] = { pos = 1000, section = 15 },
['Stone Pickaxe'] = { pos = 3586, section = 25 },
['Stone Pressure Plate'] = { pos = 3353, section = 13 },
['Stone Pressure Plate Revision 1'] = { pos = 2091, section = 29 },
['Stone Revision 2'] = { pos = 376, section = 29 },
['Stone Shovel'] = { pos = 3587, section = 25 },
['Stone Slab'] = { pos = 3324, section = 12 },
['Stone Stairs'] = { pos = 3325, section = 12 },
['Stone Sword'] = { pos = 3640, section = 28 },
['Stonecutter BE'] = { pos = 1082, section = 20 },
['Stonecutter Revision 1'] = { pos = 2449, section = 26 },
['Stray Spawn Egg'] = { pos = 1377, section = 24 },
['Stray Spawn Egg Revision 1'] = { pos = 1566, section = 39 },
['Strider Spawn Egg'] = { pos = 223, section = 24 },
String = { pos = 3531, section = 23 },
['String Tag'] = { pos = 1292, section = 32 },
['Stripped Acacia Log'] = { pos = 1670, section = 12 },
['Stripped Acacia Wood'] = { pos = 2103, section = 12 },
['Stripped Birch Log'] = { pos = 1671, section = 12 },
['Stripped Birch Wood'] = { pos = 2101, section = 12 },
['Stripped Cherry Log'] = { pos = 1186, section = 12 },
['Stripped Cherry Wood'] = { pos = 1187, section = 12 },
['Stripped Crimson Hyphae'] = { pos = 200, section = 16 },
['Stripped Crimson Stem'] = { pos = 175, section = 16 },
['Stripped Dark Oak Log'] = { pos = 1672, section = 12 },
['Stripped Dark Oak Wood'] = { pos = 2104, section = 12 },
['Stripped Jungle Log'] = { pos = 1673, section = 12 },
['Stripped Jungle Wood'] = { pos = 2102, section = 12 },
['Stripped Mangrove Log'] = { pos = 597, section = 12 },
['Stripped Mangrove Wood'] = { pos = 598, section = 12 },
['Stripped Oak Log'] = { pos = 1674, section = 12 },
['Stripped Oak Wood'] = { pos = 2099, section = 12 },
['Stripped Spruce Log'] = { pos = 1675, section = 12 },
['Stripped Spruce Wood'] = { pos = 2100, section = 12 },
['Stripped Warped Hyphae'] = { pos = 201, section = 16 },
['Stripped Warped Stem'] = { pos = 176, section = 16 },
Strontium = { pos = 1870, section = 34 },
['Structure Block'] = { pos = 1380, section = 26 },
['Structure Void'] = { pos = 3614, section = 26 },
['Structure Void BE'] = { pos = 60, section = 26 },
['Studded Boots'] = { pos = 2172, section = 30 },
['Studded Chestplate'] = { pos = 2173, section = 30 },
['Studded Helmet'] = { pos = 2174, section = 30 },
['Studded Leggings'] = { pos = 2175, section = 30 },
Sugar = { pos = 3219, section = 10 },
['Sugar Cane'] = { pos = 548, section = 19 },
['Sugar Cane Revision 2'] = { pos = 3445, section = 29 },
Sulfate = { pos = 1915, section = 37 },
Sulfur = { pos = 1871, section = 34 },
Sunflower = { pos = 3446, section = 19 },
['Super Fertilizer'] = { pos = 1767, section = 33 },
['Suspicious Gravel'] = { pos = 1210, section = 15 },
['Suspicious Sand'] = { pos = 1193, section = 15 },
['Suspicious Stew'] = { pos = 2398, section = 10 },
['Swaggiest stairs ever'] = { pos = 486, section = 32 },
['Swamp Explorer Map'] = { pos = 1326, section = 25 },
['Swamp Explorer Map BE'] = { pos = 1327, section = 25 },
['Sweet Berries'] = { pos = 2457, section = 10 },
['Tadpole Spawn Egg'] = { pos = 576, section = 24 },
Tag = { pos = 1293, section = 32 },
['Taiga Village Map'] = { pos = 1326, section = 25 },
['Taiga Village Map BE'] = { pos = 1327, section = 25 },
['Tall Grass'] = { pos = 3447, section = 19 },
Tantalum = { pos = 1872, section = 34 },
Target = { pos = 196, section = 13 },
Technetium = { pos = 1873, section = 34 },
Tellurium = { pos = 1874, section = 34 },
Tennessine = { pos = 1875, section = 34 },
Terbium = { pos = 1876, section = 34 },
Terracotta = { pos = 3381, section = 15 },
Thallium = { pos = 1877, section = 34 },
['Thick Lingering Potion'] = { pos = 1097, section = 31 },
['Thick Potion'] = { pos = 1083, section = 21 },
['Thick Potion Revision 1'] = { pos = 309, section = 45 },
['Thick Splash Potion'] = { pos = 1100, section = 22 },
Thorium = { pos = 1878, section = 34 },
Thulium = { pos = 1879, section = 34 },
['Tide Armor Trim'] = { pos = 823, section = 41 },
['Tide Armor Trim Smithing Template'] = { pos = 823, section = 41 },
['tile.info_update.name'] = { pos = 357, section = 30 },
Tin = { pos = 1869, section = 34 },
['Tinted Glass'] = { pos = 431, section = 12 },
['Tipped Arrow'] = { pos = 1266, section = 28 },
Titanium = { pos = 1880, section = 34 },
TNT = { pos = 3615, section = 26 },
Tonic = { pos = 1768, section = 33 },
['Top Snow'] = { pos = 999, section = 15 },
Torch = { pos = 3390, section = 17 },
['Torch Revision 1'] = { pos = 2092, section = 29 },
Torchflower = { pos = 1199, section = 19 },
['Torchflower Seeds'] = { pos = 1200, section = 19 },
['Totem of Undying'] = { pos = 3641, section = 28 },
['Trader Llama Spawn Egg'] = { pos = 2462, section = 24 },
['Transition metal'] = { pos = 75, section = 34 },
['Trapped Chest'] = { pos = 3616, section = 26 },
['Trapped Chest BE'] = { pos = 59, section = 26 },
['Treasure Map'] = { pos = 123, section = 25 },
Trident = { pos = 1716, section = 28 },
['Trident Revision 1'] = { pos = 1680, section = 29 },
['Tripwire Hook'] = { pos = 3354, section = 13 },
['Tropical Fish'] = { pos = 1689, section = 10 },
['Tropical Fish Bucket Revision 1'] = { pos = 1685, section = 29 },
['Tropical Fish Spawn Egg'] = { pos = 1722, section = 24 },
['Tropical Fish Spawn Egg Revision 1'] = { pos = 1971, section = 39 },
['Tube Coral'] = { pos = 1711, section = 15 },
['Tube Coral Block'] = { pos = 1706, section = 15 },
['Tube Coral Block Revision 1'] = { pos = 1700, section = 29 },
['Tube Coral Fan'] = { pos = 2135, section = 15 },
['Tube Coral Fan Revision 1'] = { pos = 1695, section = 29 },
['Tube Coral Fan Revision 2'] = { pos = 2143, section = 29 },
Tuff = { pos = 433, section = 15 },
Tungsten = { pos = 1881, section = 34 },
['Tungsten Chloride'] = { pos = 1917, section = 37 },
['Turtle Egg'] = { pos = 1972, section = 5 },
['Turtle Egg Revision 1'] = { pos = 1668, section = 29 },
['Turtle Helmet'] = { pos = 1681, section = 1 },
['Turtle Shell'] = { pos = 1681, section = 1 },
['Turtle Spawn Egg'] = { pos = 1729, section = 24 },
['Twisting Vines'] = { pos = 203, section = 16 },
['Ultramarine Cloth'] = { pos = 228, section = 40 },
['Uncraftable Lingering Potion'] = { pos = 3500, section = 31 },
['Uncraftable Potion'] = { pos = 1403, section = 21 },
['Uncraftable Potion Revision 1'] = { pos = 310, section = 45 },
['Uncraftable Splash Potion'] = { pos = 3483, section = 22 },
['Uncraftable Tipped Arrow'] = { pos = 1409, section = 28 },
['Underwater TNT'] = { pos = 1946, section = 33 },
['Underwater Torch'] = { pos = 1769, section = 33 },
Uranium = { pos = 1882, section = 34 },
['USB Charger'] = { pos = 1640, section = 32 },
['USB Charger Block'] = { pos = 1640, section = 32 },
Vanadium = { pos = 1883, section = 34 },
['Verdant Froglight'] = { pos = 584, section = 12 },
['Verdant Froglight BE'] = { pos = 580, section = 12 },
['Very Damaged Anvil'] = { pos = 1257, section = 26 },
['Vex Armor Trim'] = { pos = 824, section = 41 },
['Vex Armor Trim Smithing Template'] = { pos = 824, section = 41 },
['Vex Spawn Egg'] = { pos = 1413, section = 24 },
['Village Map'] = { pos = 1326, section = 25 },
['Village Map BE'] = { pos = 1327, section = 25 },
['Villager Spawn Egg'] = { pos = 1165, section = 24 },
['Villager Spawn Egg Revision 1'] = { pos = 1398, section = 39 },
['Vindicator Spawn Egg'] = { pos = 1414, section = 24 },
Vines = { pos = 3448, section = 19 },
['Violet Cloth'] = { pos = 238, section = 40 },
['Void Air'] = { pos = 2363, section = 15 },
['Wandering Trader Spawn Egg'] = { pos = 2463, section = 24 },
['Ward Armor Trim'] = { pos = 826, section = 41 },
['Ward Armor Trim Smithing Template'] = { pos = 826, section = 41 },
['Warden Spawn Egg'] = { pos = 581, section = 24 },
['Warped Button'] = { pos = 171, section = 13 },
['Warped Door'] = { pos = 172, section = 13 },
['Warped Fence'] = { pos = 649, section = 12 },
['Warped Fence BE'] = { pos = 164, section = 12 },
['Warped Fence Gate'] = { pos = 180, section = 13 },
['Warped Fence Gate BE'] = { pos = 383, section = 13 },
['Warped Fungus'] = { pos = 159, section = 16 },
['Warped Fungus on a Stick'] = { pos = 224, section = 25 },
['Warped Hanging Sign'] = { pos = 661, section = 5 },
['Warped Hyphae'] = { pos = 199, section = 16 },
['Warped Nylium'] = { pos = 153, section = 16 },
['Warped Planks'] = { pos = 147, section = 12 },
['Warped Pressure Plate'] = { pos = 173, section = 13 },
['Warped Roots'] = { pos = 192, section = 16 },
['Warped Sign'] = { pos = 178, section = 17 },
['Warped Slab'] = { pos = 165, section = 12 },
['Warped Stairs'] = { pos = 166, section = 12 },
['Warped Stem'] = { pos = 154, section = 16 },
['Warped Trapdoor'] = { pos = 174, section = 13 },
['Warped Wart Block'] = { pos = 155, section = 16 },
Water = { pos = 2127, section = 11 },
['Water (compound)'] = { pos = 1892, section = 35 },
['Water BE'] = { pos = 2128, section = 11 },
['Water Block'] = { pos = 2118, section = 29 },
['Water Bottle'] = { pos = 1083, section = 21 },
['Water Bottle Revision 1'] = { pos = 311, section = 45 },
['Water Bucket'] = { pos = 3149, section = 4 },
['Water Revision 2'] = { pos = 851, section = 29 },
['Wax Block'] = { pos = 96, section = 30 },
['Waxed Block of Copper'] = { pos = 401, section = 12 },
['Waxed Copper'] = { pos = 401, section = 12 },
['Waxed Copper Block'] = { pos = 401, section = 12 },
['Waxed Cut Copper'] = { pos = 402, section = 12 },
['Waxed Cut Copper Block'] = { pos = 402, section = 12 },
['Waxed Cut Copper Slab'] = { pos = 403, section = 12 },
['Waxed Cut Copper Stairs'] = { pos = 404, section = 12 },
['Waxed Exposed Copper'] = { pos = 411, section = 12 },
['Waxed Exposed Copper Block'] = { pos = 411, section = 12 },
['Waxed Exposed Cut Copper'] = { pos = 412, section = 12 },
['Waxed Exposed Cut Copper Block'] = { pos = 412, section = 12 },
['Waxed Exposed Cut Copper Slab'] = { pos = 413, section = 12 },
['Waxed Exposed Cut Copper Stairs'] = { pos = 414, section = 12 },
['Waxed Oxidized Copper'] = { pos = 441, section = 12 },
['Waxed Oxidized Copper Block'] = { pos = 441, section = 12 },
['Waxed Oxidized Cut Copper'] = { pos = 442, section = 12 },
['Waxed Oxidized Cut Copper Block'] = { pos = 442, section = 12 },
['Waxed Oxidized Cut Copper Slab'] = { pos = 443, section = 12 },
['Waxed Oxidized Cut Copper Stairs'] = { pos = 444, section = 12 },
['Waxed Weathered Copper'] = { pos = 424, section = 12 },
['Waxed Weathered Copper Block'] = { pos = 424, section = 12 },
['Waxed Weathered Cut Copper'] = { pos = 425, section = 12 },
['Waxed Weathered Cut Copper Block'] = { pos = 425, section = 12 },
['Waxed Weathered Cut Copper Slab'] = { pos = 423, section = 12 },
['Waxed Weathered Cut Copper Stairs'] = { pos = 426, section = 12 },
['Wayfinder Armor Trim'] = { pos = 1218, section = 41 },
['Wayfinder Armor Trim Smithing Template'] = { pos = 1218, section = 41 },
['Weathered Copper'] = { pos = 424, section = 12 },
['Weathered Copper Block'] = { pos = 424, section = 12 },
['Weathered Cut Copper'] = { pos = 425, section = 12 },
['Weathered Cut Copper Block'] = { pos = 425, section = 12 },
['Weathered Cut Copper Slab'] = { pos = 423, section = 12 },
['Weathered Cut Copper Stairs'] = { pos = 426, section = 12 },
['Weeping Vines'] = { pos = 160, section = 16 },
['Wet Sponge'] = { pos = 3617, section = 26 },
Wheat = { pos = 3220, section = 10 },
['Wheat Seeds'] = { pos = 1067, section = 19 },
['White Balloon'] = { pos = 1947, section = 33 },
['White Banner'] = { pos = 788, section = 7 },
['White Banner 15w14a'] = { pos = 487, section = 32 },
['White Base Banner'] = { pos = 3062, section = 2 },
['White Base Dexter Canton Banner'] = { pos = 3063, section = 2 },
['White Base Gradient Banner'] = { pos = 3064, section = 2 },
['White Base Indented Banner'] = { pos = 3065, section = 2 },
['White Base Sinister Canton Banner'] = { pos = 3066, section = 2 },
['White Beaker'] = { pos = 1897, section = 35 },
['White Bed'] = { pos = 3185, section = 7 },
['White Bed BE'] = { pos = 1559, section = 7 },
['White Bed LCE'] = { pos = 1559, section = 7 },
['White Bend Banner'] = { pos = 3067, section = 2 },
['White Bend Sinister Banner'] = { pos = 3068, section = 2 },
['White Bordure Banner'] = { pos = 3069, section = 2 },
['White Bordure Indented Banner'] = { pos = 3070, section = 2 },
['White Candle'] = { pos = 437, section = 7 },
['White Carpet'] = { pos = 1635, section = 7 },
['White Carpet Revision 1'] = { pos = 789, section = 40 },
['White Chevron Banner'] = { pos = 3071, section = 2 },
['White Chief Banner'] = { pos = 3072, section = 2 },
['White Chief Dexter Canton Banner'] = { pos = 3073, section = 2 },
['White Chief Indented Banner'] = { pos = 3074, section = 2 },
['White Chief Sinister Canton Banner'] = { pos = 3075, section = 2 },
['White Cloth'] = { pos = 242, section = 40 },
['White Concrete'] = { pos = 1517, section = 7 },
['White Concrete Powder'] = { pos = 1518, section = 7 },
['White Creeper Charge Banner'] = { pos = 3076, section = 2 },
['White Cross Banner'] = { pos = 3077, section = 2 },
['White Dye'] = { pos = 2378, section = 6 },
['White Fess Banner'] = { pos = 3078, section = 2 },
['White Field Masoned Banner'] = { pos = 3079, section = 2 },
['White Firework Star'] = { pos = 820, section = 9 },
['White Flask'] = { pos = 1907, section = 36 },
['White Flower Charge Banner'] = { pos = 3080, section = 2 },
['White Glazed Terracotta'] = { pos = 1543, section = 7 },
['White Glazed Terracotta Revision 1'] = { pos = 1519, section = 40 },
['White Globe Banner'] = { pos = 50, section = 2 },
['White Glow Stick'] = { pos = 2006, section = 33 },
['White Gradient Banner'] = { pos = 3081, section = 2 },
['White Inverted Chevron Banner'] = { pos = 3082, section = 2 },
['White Jar'] = { pos = 1915, section = 37 },
['White Lozenge Banner'] = { pos = 3083, section = 2 },
['White Pale Banner'] = { pos = 3084, section = 2 },
['White Pale Dexter Banner'] = { pos = 3085, section = 2 },
['White Pale Sinister Banner'] = { pos = 3086, section = 2 },
['White Paly Banner'] = { pos = 3087, section = 2 },
['White Per Bend Banner'] = { pos = 3088, section = 2 },
['White Per Bend Inverted Banner'] = { pos = 3089, section = 2 },
['White Per Bend Sinister Banner'] = { pos = 3090, section = 2 },
['White Per Bend Sinister Inverted Banner'] = { pos = 3091, section = 2 },
['White Per Fess Banner'] = { pos = 3092, section = 2 },
['White Per Fess Inverted Banner'] = { pos = 3093, section = 2 },
['White Per Pale Banner'] = { pos = 3094, section = 2 },
['White Per Pale Inverted Banner'] = { pos = 3095, section = 2 },
['White Piglin Banner'] = { pos = 373, section = 2 },
['White Roundel Banner'] = { pos = 3096, section = 2 },
['White Saltire Banner'] = { pos = 3097, section = 2 },
['White Shield'] = { pos = 2528, section = 1 },
['White Shulker Box'] = { pos = 1617, section = 7 },
['White Shulker Box Revision 1'] = { pos = 1430, section = 40 },
['White Skull Charge Banner'] = { pos = 3098, section = 2 },
['White Snout Banner'] = { pos = 373, section = 2 },
['White Stained Glass'] = { pos = 791, section = 7 },
['White Stained Glass Pane'] = { pos = 792, section = 7 },
['White Stained Glass Pane BE'] = { pos = 2022, section = 7 },
['White Terracotta'] = { pos = 790, section = 7 },
['White Thing Banner'] = { pos = 3099, section = 2 },
['White Tinted Glass'] = { pos = 1314, section = 40 },
['White Tinted Glass Pane'] = { pos = 17, section = 40 },
['White Tulip'] = { pos = 3449, section = 19 },
['White Wood Planks'] = { pos = 258, section = 30 },
['White Wool'] = { pos = 1537, section = 7 },
['White Wool Revision 2'] = { pos = 793, section = 40 },
['Wild Armor Trim'] = { pos = 828, section = 41 },
['Wild Armor Trim Smithing Template'] = { pos = 828, section = 41 },
['Witch Spawn Egg'] = { pos = 1166, section = 24 },
['Wither Rose'] = { pos = 2388, section = 19 },
['Wither Skeleton Skull'] = { pos = 968, section = 14 },
['Wither Skeleton Skull BE'] = { pos = 219, section = 14 },
['Wither Skeleton Spawn Egg'] = { pos = 1378, section = 24 },
['Wither Spawn Egg'] = { pos = 698, section = 24 },
Wob = { pos = 1323, section = 32 },
['Wolf Spawn Egg'] = { pos = 1167, section = 24 },
['Wolf Spawn Egg Revision 1'] = { pos = 1399, section = 39 },
Wolfram = { pos = 1881, section = 34 },
['Wood Heart'] = { pos = 122, section = 32 },
['Wooden Axe'] = { pos = 3588, section = 25 },
['Wooden Hoe'] = { pos = 3589, section = 25 },
['Wooden Pickaxe'] = { pos = 3590, section = 25 },
['Wooden Shovel'] = { pos = 3591, section = 25 },
['Wooden Slab'] = { pos = 904, section = 12 },
['Wooden Sword'] = { pos = 3642, section = 28 },
['Woodland Explorer Map'] = { pos = 3592, section = 25 },
['Woodland Explorer Map BE'] = { pos = 126, section = 25 },
['Written Book'] = { pos = 3593, section = 25 },
Xenon = { pos = 1884, section = 34 },
['Yellow Balloon'] = { pos = 1948, section = 33 },
['Yellow Banner'] = { pos = 794, section = 7 },
['Yellow Banner 15w14a'] = { pos = 488, section = 32 },
['Yellow Base Banner'] = { pos = 3100, section = 2 },
['Yellow Base Dexter Canton Banner'] = { pos = 3101, section = 2 },
['Yellow Base Gradient Banner'] = { pos = 3102, section = 2 },
['Yellow Base Indented Banner'] = { pos = 3103, section = 2 },
['Yellow Base Sinister Canton Banner'] = { pos = 3104, section = 2 },
['Yellow Beaker'] = { pos = 1890, section = 35 },
['Yellow Bed'] = { pos = 3186, section = 7 },
['Yellow Bed BE'] = { pos = 1560, section = 7 },
['Yellow Bed LCE'] = { pos = 1560, section = 7 },
['Yellow Bend Banner'] = { pos = 3105, section = 2 },
['Yellow Bend Sinister Banner'] = { pos = 3106, section = 2 },
['Yellow Bordure Banner'] = { pos = 3107, section = 2 },
['Yellow Bordure Indented Banner'] = { pos = 3108, section = 2 },
['Yellow Candle'] = { pos = 438, section = 7 },
['Yellow Carpet'] = { pos = 1636, section = 7 },
['Yellow Carpet Revision 1'] = { pos = 795, section = 40 },
['Yellow Chevron Banner'] = { pos = 3109, section = 2 },
['Yellow Chief Banner'] = { pos = 3110, section = 2 },
['Yellow Chief Dexter Canton Banner'] = { pos = 3111, section = 2 },
['Yellow Chief Indented Banner'] = { pos = 3112, section = 2 },
['Yellow Chief Sinister Canton Banner'] = { pos = 3113, section = 2 },
['Yellow Cloth'] = { pos = 243, section = 40 },
['Yellow Concrete'] = { pos = 1520, section = 7 },
['Yellow Concrete Powder'] = { pos = 1521, section = 7 },
['Yellow Creeper Charge Banner'] = { pos = 3114, section = 2 },
['Yellow Cross Banner'] = { pos = 3115, section = 2 },
['Yellow Dye'] = { pos = 3170, section = 6 },
['Yellow Fess Banner'] = { pos = 3116, section = 2 },
['Yellow Field Masoned Banner'] = { pos = 3117, section = 2 },
['Yellow Firework Star'] = { pos = 821, section = 9 },
['Yellow Flask'] = { pos = 1914, section = 36 },
['Yellow Flower Charge Banner'] = { pos = 3118, section = 2 },
['Yellow Glazed Terracotta'] = { pos = 1522, section = 7 },
['Yellow Globe Banner'] = { pos = 51, section = 2 },
['Yellow Glow Stick'] = { pos = 2007, section = 33 },
['Yellow Gradient Banner'] = { pos = 3119, section = 2 },
['Yellow Inverted Chevron Banner'] = { pos = 3120, section = 2 },
['Yellow Jar'] = { pos = 1924, section = 37 },
['Yellow Key'] = { pos = 453, section = 32 },
['Yellow Lozenge Banner'] = { pos = 3121, section = 2 },
['Yellow Pale Banner'] = { pos = 3122, section = 2 },
['Yellow Pale Dexter Banner'] = { pos = 3123, section = 2 },
['Yellow Pale Sinister Banner'] = { pos = 3124, section = 2 },
['Yellow Paly Banner'] = { pos = 3125, section = 2 },
['Yellow Per Bend Banner'] = { pos = 3126, section = 2 },
['Yellow Per Bend Inverted Banner'] = { pos = 3127, section = 2 },
['Yellow Per Bend Sinister Banner'] = { pos = 3128, section = 2 },
['Yellow Per Bend Sinister Inverted Banner'] = { pos = 3129, section = 2 },
['Yellow Per Fess Banner'] = { pos = 3130, section = 2 },
['Yellow Per Fess Inverted Banner'] = { pos = 3131, section = 2 },
['Yellow Per Pale Banner'] = { pos = 3132, section = 2 },
['Yellow Per Pale Inverted Banner'] = { pos = 3133, section = 2 },
['Yellow Piglin Banner'] = { pos = 374, section = 2 },
['Yellow Roundel Banner'] = { pos = 3134, section = 2 },
['Yellow Saltire Banner'] = { pos = 3135, section = 2 },
['Yellow Shield'] = { pos = 2529, section = 1 },
['Yellow Shulker Box'] = { pos = 1618, section = 7 },
['Yellow Shulker Box Revision 1'] = { pos = 1431, section = 40 },
['Yellow Skull Charge Banner'] = { pos = 3136, section = 2 },
['Yellow Snout Banner'] = { pos = 374, section = 2 },
['Yellow Stained Glass'] = { pos = 797, section = 7 },
['Yellow Stained Glass Pane'] = { pos = 798, section = 7 },
['Yellow Stained Glass Pane BE'] = { pos = 2023, section = 7 },
['Yellow Terracotta'] = { pos = 796, section = 7 },
['Yellow Thing Banner'] = { pos = 3137, section = 2 },
['Yellow Tinted Glass'] = { pos = 1315, section = 40 },
['Yellow Tinted Glass Pane'] = { pos = 18, section = 40 },
['Yellow Wood Planks'] = { pos = 259, section = 30 },
['Yellow Wool'] = { pos = 1538, section = 7 },
['Yellow Wool Revision 2'] = { pos = 799, section = 40 },
Ytterbium = { pos = 1885, section = 34 },
Yttrium = { pos = 1886, section = 34 },
Zinc = { pos = 1887, section = 34 },
Zirconium = { pos = 1888, section = 34 },
['Zoglin Spawn Egg'] = { pos = 268, section = 24 },
['Zombie Head'] = { pos = 969, section = 14 },
['Zombie Head BE'] = { pos = 220, section = 14 },
['Zombie Horse Spawn Egg'] = { pos = 1379, section = 24 },
['Zombie Horse Spawn Egg Revision 1'] = { pos = 1591, section = 39 },
['Zombie Pigman Spawn Egg'] = { pos = 1169, section = 24 },
['Zombie Pigman Spawn Egg Revision 1'] = { pos = 1401, section = 39 },
['Zombie Spawn Egg'] = { pos = 1168, section = 24 },
['Zombie Spawn Egg Revision 1'] = { pos = 1400, section = 39 },
['Zombie Villager Spawn Egg'] = { pos = 1349, section = 24 },
['Zombified Piglin Spawn Egg'] = { pos = 1169, section = 24 },
},
}
459b910e0cd77ac4367b843098545ea610674811
Module:Inventory slot
828
11
173
21
2024-05-08T16:36:23Z
Axxyyy
2
Scribunto
text/plain
local p = {}
local i18n = {
filename = 'Invicon $1',
legacyFilename = 'Grid $1.png',
modLink = 'Mods/$1/$2',
moduleAliases = [[Module:Inventory slot/Aliases]],
moduleInvIds = [[Module:InvSprite/IDs]],
moduleModIds = 'Module:InvSprite/Mods/$1/IDs',
moduleRandom = [[Module:Random]],
moduleSprite = [[Module:Sprite]],
-- List of special prefixes which should be handled by
-- other modules (such as being moved outside links)
prefixes = {
'Any',
'Matching',
'Damaged',
any = 'Any',
matching = 'Matching',
damaged = 'Damaged',
},
templateFileUrl = 'FileUrl',
}
p.i18n = i18n
p.prefixes = i18n.prefixes
local random = require( i18n.moduleRandom ).random
local sprite = require( i18n.moduleSprite ).sprite
local aliases = mw.loadData( i18n.moduleAliases )
-- local ids = mw.loadData( i18n.moduleInvIds ).ids
local modIds = {}
local pageName = mw.title.getCurrentTitle().text
-- Performs a simple recursive clone of a table's values
local function cloneTable( origTable )
local newTable = {}
for k, v in pairs( origTable ) do
if type( v ) == 'table' then
v = cloneTable( v )
end
newTable[k] = v
end
return newTable
end
--[[Merges a list, or inserts a string
or table into a table
--]]
local function mergeList( parentTable, content )
local i = #parentTable + 1
if content[1] then
-- Merge list into table
for _, v in ipairs( content ) do
parentTable[i] = v
i = i + 1
end
else
-- Add strings or tables to table
parentTable[i] = content
end
end
-- Creates the HTML for an item
local function makeItem( frame, i, args )
local item = mw.html.create( 'span' ):addClass( 'invslot-item' )
if args.imgclass then
item:addClass( args.imgclass )
end
if frame.name == '' then
item:tag( 'br' )
return item
end
local category
local title = frame.title or mw.text.trim( args.title or '' )
local mod = frame.mod
local name = frame.name or ''
local num = frame.num
local description = frame.text
local img, idData
if mod then
local modData = modIds[mod]
if not modData and mw.title.new( i18n.moduleModIds:gsub( '%$1', mod ) ).exists then
modData = mw.loadData( i18n.moduleModIds:gsub( '%$1', mod ) )
modIds[mod] = modData
end
if modData and modData[name] then
idData = modData[name]
else
img = i18n.legacyFilename:gsub( '%$1', name .. ' (' .. mod .. ')' )
end
elseif ids and ids[name] then
idData = ids[name]
elseif name:match( '\.gif$' ) or name:match( '\.png$' ) then
img = i18n.filename:gsub( '%$1', name )
-- Remove file extension from name
name = name:sub( 0, -5 )
else
img = i18n.legacyFilename:gsub( '%$1', name )
end
local link = args.link or ''
if link == '' then
if mod then
link = i18n.modLink:gsub( '%$1', mod ):gsub( '%$2', name )
else
link = name:gsub( '^' .. i18n.prefixes.damaged .. ' ', '' )
end
elseif link:lower() == 'none' then
link = nil
end
if link == pageName then
link = nil
end
local formattedTitle
local plainTitle
if title == '' then
plainTitle = name
elseif title:lower() ~= 'none' then
plainTitle = title:gsub( '\\\\', '\' ):gsub( '\\&', '&' )
local formatPattern = '&[0-9a-fk-or]'
if plainTitle:match( formatPattern ) then
formattedTitle = title
plainTitle = plainTitle:gsub( formatPattern, '' )
end
if plainTitle == '' then
plainTitle = name
else
plainTitle = plainTitle:gsub( '\', '\\' ):gsub( '&', '&' )
end
elseif link then
if img then
formattedTitle = ''
else
plainTitle = ''
end
end
item:attr{
['data-minetip-title'] = formattedTitle,
['data-minetip-text'] = description
}
mw.log(img)
if img then
-- & is re-escaped because mw.html treats attributes
-- as plain text, but MediaWiki doesn't
local escapedTitle = ( plainTitle or '' ):gsub( '&', '&' )
item:addClass( 'invslot-item-image' )
:wikitext( '[[File:', img, '|32x32px|link=', link or '', '|', escapedTitle, ']]' )
else
local image
if mod then
image = args.spritesheet or mod .. 'Sprite.png'
end
if link then
item:wikitext( '[[', link, '|' )
end
local image, spriteCat = sprite{
iddata = idData, title = plainTitle,
image = image, settings = 'InvSprite'
}
item:node( image )
category = spriteCat
end
if num and num > 1 and num < 1000 then
if img and link then
item:wikitext( '[[', link, '|' )
end
local number = item
:tag( 'span' )
:addClass( 'invslot-stacksize' )
:attr{ title = plainTitle }
:wikitext( num )
if numStyle then
number:cssText( numStyle )
end
if img and link then
item:wikitext( ']]' )
end
end
if idData and link then
item:wikitext( ']]' )
end
item:wikitext( category )
mw.logObject(item)
return item
end
-- Main entry point
function p.slot( f )
local args = f.args or f
if f == mw.getCurrentFrame() and args[1] == nil then
args = f:getParent().args
end
if not args.parsed then
args[1] = mw.text.trim( args[1] or '' )
end
local modData = {
aliases = args.modaliases or '',
default = args.mod
}
if modData.aliases ~= '' then
modData.aliases = mw.loadData( 'Module:' .. modData.aliases )
else
modData.aliases = nil
end
if args.mod == '' then
modData.default = nil
end
local frames
if args.parsed then
frames = args[1]
elseif args[1] ~= '' then
local randomise = args.class == 'invslot-large' and 'never' or nil
frames = p.parseFrameText( args[1], randomise, false, modData )
end
local animated = frames and #frames > 1
local imgClass = args.imgclass
local numStyle = args.numstyle
local body = mw.html.create( 'span' ):addClass( 'invslot' ):css{ ['vertical-align'] = args.align }
if animated then
body:addClass( 'animated' )
end
if args.class then
body:addClass( args.class )
end
if args.style then
body:cssText( args.style )
end
if ( args.default or '' ) ~= '' then
body:css( 'background-image', f:expandTemplate{ title = i18n.templateFileUrl, args = { args.default .. '.png' } } )
end
--mw.logObject( frames )
if not frames then
body:tag( 'br' )
return tostring( body )
end
local activeFrame = frames.randomise == true and random( #frames ) or 1
for i, frame in ipairs( frames ) do
local item
-- Table is a list, must contain subframes
if frame[1] then
item = body:tag( 'span' ):addClass( 'animated-subframe' )
local subActiveFrame = frame.randomise and random( #frame ) or 1
for sI, sFrame in ipairs( frame ) do
local sItem = makeItem( sFrame, sI, args )
item:node( sItem )
if sI == subActiveFrame then
--Should be animated-active but JS isn't updated
sItem:addClass( 'active' )
end
end
else
item = makeItem( frame, i, args )
body:node( item )
end
if i == activeFrame and animated then
--Should be animated-active but JS isn't updated
item:addClass( 'active' )
end
end
return tostring( body )
end
--[[Parses the frame text into a table of frames and subframes,
expanding aliases (and optionally retaining a reference), and
deciding if the slot can be randomised
--]]
function p.parseFrameText( framesText, randomise, aliasReference, modData )
local frames = { randomise = randomise }
local subframes = {}
local subframe
local expandedAliases
local splitFrames = mw.text.split( mw.text.trim( framesText ), '%s*;%s*' )
for _, frameText in ipairs( splitFrames ) do
frameText = frameText:gsub( '^%s*{%s*', function()
subframe = true
return ''
end )
if subframe then
frameText = frameText:gsub( '%s*}%s*$', function()
subframe = 'last'
return ''
end )
end
local frame = p.makeFrame( frameText, modData and modData.default )
local newFrame = frame
if aliases or modData.aliases then
local id = frame.name
if frame.mod then
id = frame.mod .. ':' .. id
end
local alias = modData and modData.aliases and modData.aliases[id] or
aliases and aliases[id]
if alias then
newFrame = p.getAlias( alias, frame )
if aliasReference then
local curFrame = #frames + 1
local aliasData = { frame = frame, length = #newFrame }
if subframe then
if not subframes.aliasReference then
subframes.aliasReference = {}
end
subframes.aliasReference[#subframes + 1] = aliasData
else
if not expandedAliases then
expandedAliases = {}
end
expandedAliases[curFrame] = aliasData
end
end
end
end
if subframe then
mergeList( subframes, newFrame )
-- Randomise starting frame for "Any *" aliases, as long as the alias is the only subframe
if frames.randomise ~= 'never' and subframes.randomise == nil and
frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then
subframes.randomise = true
else
subframes.randomise = false
end
if frames.randomise ~= 'never' then
frames.randomise = false
end
if subframe == 'last' then
-- No point having a subframe containing a single frame,
-- or the subframe being the only frame
if #subframes == 1 or #splitFrames == i and #frames == 0 then
mergeList( frames, subframes )
else
table.insert( frames, subframes )
end
subframes = {}
subframe = nil
end
else
-- Randomise starting frame for "Any *" aliases, as long as the alias is the only frame
if frames.randomise == nil and frame.name:match( '^' .. i18n.prefixes.any .. ' ' ) then
frames.randomise = true
elseif frames.randomise ~= 'never' then
frames.randomise = false
end
mergeList( frames, newFrame )
end
end
frames.aliasReference = expandedAliases
return frames
end
--[[Returns a new table with the parts of the parent frame
added to the alias
--]]
function p.getAlias( aliasFrames, parentFrame )
-- If alias is just a name, return the parent frame with the new name
if type( aliasFrames ) == 'string' then
local expandedFrame = mw.clone( parentFrame )
expandedFrame.name = aliasFrames
return { expandedFrame }
end
-- Single frame alias, put in list
if aliasFrames.name then
aliasFrames = { aliasFrames }
end
local expandedFrames = {}
for i, aliasFrame in ipairs( aliasFrames ) do
local expandedFrame
if type( aliasFrame ) == 'string' then
expandedFrame = { name = aliasFrame }
else
expandedFrame = cloneTable( aliasFrame )
end
expandedFrame.title = parentFrame.title or expandedFrame.title
expandedFrame.mod = parentFrame.mod or expandedFrame.mod
expandedFrame.num = parentFrame.num or expandedFrame.num
expandedFrame.text = parentFrame.text or expandedFrame.text
expandedFrames[i] = expandedFrame
end
return expandedFrames
end
function p.expandAlias( parentFrame, alias )
return p.getAlias( alias, parentFrame )
end
function p.stringifyFrame( frame )
if not frame.name then
return ''
end
return string.format(
'[%s]%s:%s,%s[%s]',
frame.title or '',
frame.mod or 'Minecraft',
frame.name,
frame.num or '',
frame.text or ''
)
end
function p.stringifyFrames( frames )
for i, frame in ipairs( frames ) do
frames[i] = p.stringifyFrame( frame )
end
return table.concat( frames, ';' )
end
-- Splits up the frame text into its parts
function p.makeFrame( frameText, mod )
-- Simple frame with no parts
if not frameText:match( '[%[:,]' ) then
return {
mod = mod,
name = mw.text.trim( frameText ),
}
end
frameText = frameText:gsub( '%s*([%[%]:,;])%s*', '%1' )
local frame = {}
frame.title = frameText:match( '^%[([^%]]+)%]' )
frame.mod = frameText:match( '([^:%]]+):' ) or mod
local vanilla = { v = 1, vanilla = 1, mc = 1, minecraft = 1 }
if frame.mod and vanilla[mw.ustring.lower( frame.mod )] or frame.mod == '' then
frame.mod = nil
end
local nameStart = ( frameText:find( ':' ) or frameText:find( '%]' ) or 0 ) + 1
if nameStart - 1 == #frameText then
nameStart = 1
end
frame.name = frameText:sub( nameStart, ( frameText:find( '[,%[]', nameStart ) or 0 ) - 1 )
frame.num = math.floor( frameText:match( ',(%d+)' ) or 0 )
if frame.num == 0 then
frame.num = nil
end
frame.text = frameText:match( '%[([^%]]+)%]$' )
return frame
end
function p.getParts( frameText, mod )
return p.makeFrame( frameText, mod )
end
return p
7992026e7fd17eb049df5bd75c2b4339ea5feb0c
File:Grid Clay.png
6
110
174
2024-05-08T16:37:33Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Grid Sand.png
6
111
175
2024-05-08T16:39:29Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Grid Ceramic.png
6
93
176
150
2024-05-08T16:41:27Z
Axxyyy
2
Axxyyy uploaded a new version of [[File:Grid Ceramic.png]]
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Grid Clay.png
6
110
177
174
2024-05-08T16:42:00Z
Axxyyy
2
Axxyyy uploaded a new version of [[File:Grid Clay.png]]
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:GridNumbersCSS.png
6
112
178
2024-05-08T19:33:32Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Widget:Stylesheet
0
113
179
2024-05-08T19:38:14Z
Axxyyy
2
Created page with "<link rel="stylesheet" href="//minecraft.gamepedia.com/index.php?action=raw&ctype=text/css&title=MediaWiki:.css">"
wikitext
text/x-wiki
<link rel="stylesheet" href="//minecraft.gamepedia.com/index.php?action=raw&ctype=text/css&title=MediaWiki:.css">
6a564d9e609d91a91c7857ce0ab015fc1fbcb6bb
MediaWiki:Common.css
8
114
180
2024-05-08T20:39:04Z
Axxyyy
2
Created page with ".scribunto-error { display: none; } /** Template stylings **/ /* [[Template:Grid]]: [[File:Grid Unknown.png]] */ .grid { position: relative; display: inline-block; font-size: 16px; text-align: center !important; background-color: #8B8B8B; border: 2px solid #373737; border-right-color: #FFF; border-bottom-color: #FFF; width: 2em; height: 2em; vertical-align: bottom; } .grid.output { font-size: 24px; } .grid:before, .grid:after { content: ""; position: abs..."
css
text/css
.scribunto-error {
display: none;
}
/** Template stylings **/
/* [[Template:Grid]]: [[File:Grid Unknown.png]] */
.grid {
position: relative;
display: inline-block;
font-size: 16px;
text-align: center !important;
background-color: #8B8B8B;
border: 2px solid #373737;
border-right-color: #FFF;
border-bottom-color: #FFF;
width: 2em;
height: 2em;
vertical-align: bottom;
}
.grid.output {
font-size: 24px;
}
.grid:before,
.grid:after {
content: "";
position: absolute;
background-color: #8B8B8B;
height: 2px;
width: 2px;
pointer-events: none;
}
.grid:before {
bottom: -2px;
left: -2px;
}
.grid:after {
top: -2px;
right: -2px;
}
.grid img {
padding: 2px;
}
.grid > .item,
.grid > .default-item {
position: absolute;
margin: -18px 0 0 -18px;
top: 1em;
left: 1em;
}
.grid > .item > a.new {
background: url(https://hydra-media.cursecdn.com/minecraft.gamepedia.com/3/35/Grid_Unknown.png) no-repeat 2px;
display: block;
width: 32px;
height: 32px;
padding: 2px;
text-indent: -9999px;
overflow: hidden;
}
.grid > .item > .number {
position: absolute;
right: 0;
bottom: 0;
font-family: Minecraft;
font-size: 16px;
font-weight: normal;
line-height: 16px;
color: #FFF;
pointer-events: none;
text-shadow: 2px 2px 0 #3F3F3F;
filter: dropshadow(color=#3F3F3F, offx=2, offy=2);
z-index: 6;
}
.grid > .item > .number > a {
color: #FFF;
text-decoration: none;
}
.grid > .item > .number > .selflink {
font-weight: normal;
}
.grid > .item > a.new + .number {
display: none;
}
/* Plain grid with no border or background */
.grid.plain {
background-color: transparent;
border: 0;
}
.grid.plain:before,
.grid.plain:after {
content: none;
}
/* Generic grid layout styling */
.grid-Crafting_Table,
.grid-Furnace,
.grid-Brewing_Stand table,
.grid-generic {
background: #C6C6C6;
border: outset 2px #999;
padding: 6px;
text-align: left !important;
}
.grid-Crafting_Table td,
.grid-Furnace td,
.grid-Brewing_Stand td,
.grid-generic td {
border: none;
padding: 0;
}
/* [[Template:Grid/Crafting Table]] */
.grid-Crafting_Table .arrow,
.grid-Crafting_Table .shapeless {
text-align: center;
vertical-align: bottom;
}
.grid-Crafting_Table .arrow {
width: 40px;
padding-bottom: 5px;
}
.grid-Crafting_Table .shapeless span {
cursor: help;
}
/* [[Template:Grid/Furnace]] */
.grid-Furnace {
padding-left: 24px;
padding-right: 24px;
}
.grid-Furnace .arrow,
.grid-Furnace .output {
text-align: center;
vertical-align: middle;
}
.grid-Furnace .arrow {
padding-right: 18px !important;
padding-left: 14px !important;
}
/* [[Template:Grid/Brewing Stand]] */
.grid-Brewing_Stand {
position: relative;
width: 144px;
}
.grid-Brewing_Stand .bubbles {
text-align: right;
}
.grid-Brewing_Stand .input {
padding: 3px 0 !important;
vertical-align: top;
}
.grid-Brewing_Stand .output1 {
padding: 4px 10px 14px 0 !important;
}
.grid-Brewing_Stand .output2 {
padding-top: 18px !important;
}
.grid-Brewing_Stand .output3 {
padding: 4px 0 14px 10px !important;
}
.grid-Brewing_Stand .paths {
position: absolute;
bottom: 42px;
left: 42px;
z-index: 5;
}
/* [[Template:Grid/Hotbar]] */
.grid-Hotbar {
display: inline-block;
position: relative;
border: 0;
padding: 0;
background-color: transparent;
}
.grid-Hotbar > .selector {
position: absolute;
top: -2px;
margin-left: -2px;
}
.grid-Hotbar > .slots {
position: absolute;
top: 0;
left: 0;
margin: 2px;
}
.grid-Hotbar .grid {
margin: 4px;
}
/* [[Template:Infobox common]] */
.infobox {
width: 300px;
border: 1px solid #aaa;
background-color: #f9f9f9;
color: #000;
margin: .5em 0 .5em 1em;
padding: .2em;
float: right;
clear: right;
text-align: left;
font-size: 88%;
line-height: 1.5em;
}
.notaninfobox {
clear: right;
margin: 3px 0px 3px 3px;
width: 300px;
font-size: 90%;
background: #FFF;
float: right;
border: 1px solid #CCC;
padding: 2px;
}
.infobox-title {
font-weight: bold;
text-align: center;
font-size: 120%;
}
.infobox-imagearea {
text-align: center;
padding: 4px;
}
.notaninfobox table {
width: 100%;
}
.notaninfobox p {
margin: 0;
}
.notaninfobox audio {
width: 184px;
}
.notaninfobox dl:last-child {
margin-bottom: 0.2em;
}
.infobox-footer {
text-align: center;
}
/* Merge adjacent dls in the infobox (since they're usually supposed to be one, but the wiki screws up sometimes) */
.notaninfobox dl + dl {
margin-top: -0.4em;
}
/* [[Template:Infobox row]] */
.infobox-row {
white-space: nowrap;
font-weight: bold;
}
/* [[Template:Navbox]] */
.navbox {
background: #FFF;
border: 1px solid #CCC;
margin: 1em auto 0;
clear: both;
width: 100%;
}
.navbox table {
background: #FFF;
margin-left: -4px;
margin-right: -2px;
}
.navbox table:first-child {
margin-top: -2px;
}
.navbox table:last-child {
margin-bottom: -2px;
}
.navbox-top {
white-space: nowrap;
background-color: #CCC;
padding: 0 3px;
}
.navbox-navbar,
.navbox-navbar-mini {
float: left;
font-size: 80%;
}
.navbox-title {
padding: 0 10px;
font-size: 110%;
}
.navbox-group {
background-color: #EEE;
padding: 0 10px;
white-space: nowrap;
text-align: right;
}
.navbox-list {
width: 100%;
padding: 0 0 0 2px;
}
/* [[Template:LoadBox]] with navbox */
.loadbox-navbox {
padding: 2px !important;
margin: 1em 0 0 !important;
clear: both;
}
.loadbox-navbox > p {
background-color: #CCC;
text-align: center;
margin: 0;
padding: 0 3px;
}
.loadbox-navbox > p > b {
font-size: 110%;
}
.loadbox-navbox .navbox {
margin: 0 -2px -2px;
border: 0;
}
.loadbox-navbox .navbox > tbody > tr:first-child {
display: none;
}
/* [[Template:History2]] */
/*.history2 td > pre,
.history2 td > ol {
display: none;
}
.history2 ul {
margin-top: 0;
}
.history2 .toggleHistDetails {
float: right;
text-align: right;
width: 150px;
}
.history2 > tbody > tr:first-child > th {
padding-left: 152px;
}*/
/* [[Template:Sprite]] */
.sprite {
display: inline-block;
position: relative;
overflow: hidden;
vertical-align: middle;
height: 16px;
width: 16px;
}
.sprite > span {
position: absolute;
height: 256px;
width: 256px;
}
/* [[Template:Sprite2]] */
.sprite2 {
display: inline-block;
vertical-align: text-top;
height: 16px;
width: 16px;
}
/* [[Template:Sprite/Preview]] */
.sprite-preview:hover div {
opacity: 0.7 !important;
}
/* [[Template:Schematic]] */
.schematic img {
image-rendering: crisp-edges;
image-rendering: -moz-crisp-edges;
image-rendering: -o-crisp-edges;
image-rendering: -webkit-optimize-contrast;
-ms-interpolation-mode: nearest-neighbor;
}
table.schematic {
background-color: white;
border-collapse: collapse;
line-height: 0;
}
table.schematic td,
span.schematic {
border: 1px solid #AAA;
padding: 0;
}
table.schematic span,
span.schematic {
display: inline-block;
overflow: hidden;
position: relative;
}
table.schematic span span,
span.schematic span {
color: black;
font-weight: bold;
left: 0;
line-height: 1.5em;
position: absolute;
text-align: center;
text-shadow: 0 0 2px #FFF;
top: 0;
}
/** Misc stuff **/
/* Prevent page jump from the toolbar loading, doesn't affect people with the toolbar disabled */
#toolbar {
height: 22px;
}
/* Remove the header from the main page */
body.page-Minecraft_Wiki.action-view h1.firstHeading,
body.page-Minecraft_Wiki.action-view #contentSub {
display: none;
}
/* Fix floating bodyContent getting caught on something, and displaying too low */
#bodyWrapper {
display: inline-block;
width: 100%;
}
/* Remove sidead from main page editcopy since it
breaks the page and isn't on the real main page */
body.page-Minecraft_Wiki_editcopy .atfmrec {
display: none;
}
/* Collapsible Tables ([[MediaWiki:Common.js]]) */
table.collapsed tr.collapsible {
display: none;
}
.collapsible-button {
float: right;
font-weight: normal;
margin-left: 0.8em;
}
.collapsible.collapse-button-left > tr > th .collapsible-button,
.collapsible.collapse-button-left > * > tr > th .collapsible-button {
float: left;
margin-right: 0.8em;
margin-left: 0;
}
.collapsible.collapse-button-none > tr > th .collapsible-button,
.collapsible.collapse-button-none > * > tr > th .collapsible-button {
float: none;
}
/* Alternating cell background, primarily used with [[Template:Infobox row]] */
.alternatecells:nth-child(odd) {
background-color: #F9F9F9;
}
/* Alternating table rows */
.alternaterows tr:nth-child(even) {
background-color: #F9F9F9;
}
/* The blue header used throughout the wiki */
.mcwiki-header {
color: #b94a48 !important;
font-weight: bold;
margin: 3px;
text-align: center;
font-size: 120%;
padding: 8px 35px 8px 14px;
margin-bottom: 20px;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
background-color: #fcf8e3;
border: 1px solid #fbeed5;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
background-color: #f2dede;
border-color: #eed3d7;
}
/* Scale file page image to the width of the page */
#file img {
max-width: 100%;
height: auto;
}
/* Remove margin from file page table */
#mw-imagepage-section-filehistory .filehistory {
margin-right: 0;
}
/* Highlight clicked reference in blue to help navigation */
ol.references li:target,
sup.reference:target,
span.citation:target {
background-color: #C1DAF2;
}
/* Style the sitenotice and fix up its awful spacing (why is it even a table!?) */
#siteNotice #localNotice,
.page-MediaWiki_Sitenotice .mw-content-ltr > div
{
background-color: #FFFFFF;
border: 1px solid #D3D3D3;
margin-bottom: 12px;
text-align: center;
}
#siteNotice #mw-dismissable-notice #localNotice {
/* Note to other languages: Change this to the same width as the "dismiss" button in your language, this makes the sitenotice centred better */
margin-left: 55px;
}
#siteNotice td:first-child {
width: 100%;
}
#localNotice div p {
padding: 0.4em 0 0.5em;
margin: 0;
}
/* Minecraft font */
@font-face {
font-family: Minecraft;
src: url("https://hydra-media.cursecdn.com/hydra/fonts/minecraft.eot?#iefix"),
url("https://hydra-media.cursecdn.com/hydra/fonts/minecraft.woff") format('woff'),
url("https://hydra-media.cursecdn.com/hydra/fonts/minecraft.ttf") format('truetype');
}
/* Pre-style sidebar portlets before JS loads, so sidebar is less jumpy (reset in [[MediaWiki:Noscript.css]] when JS is off)
[[File:Panel-divider.png]] */
div#mw-panel div.portal {
margin: -11px 9px 10px 11px;
padding: 0.25em 0;
background-image: url(https://hydra-media.cursecdn.com/minecraft.gamepedia.com/b/bf/Panel-divider.png);
background-position: left top;
background-repeat: no-repeat;
}
div#mw-panel div.portal div.body {
background-image: none;
padding: 0;
margin: 0 0 0 1.25em;
}
div#mw-panel div.portal h5 {
padding: 4px 0 3px 1.5em;
margin-bottom: 0;
}
div#mw-panel div.portal div.body ul li {
padding: 0.25em 0;
}
#mw-panel #p-Minecraft_Wiki {
background-image: none;
margin-top: 0;
}
#p-Minecraft_Wiki h5 {
display: none;
}
#mw-panel #p-Minecraft_Wiki div.body {
margin-left: 0.5em;
}
#p-Useful_pages div.body,
#p-tb div.body {
display: none;
}
/* Allow parts of toc to be hidden */
/* Section levels */
.toc-hidelevel2 .toclevel-1 ul,
.toc-hidelevel3 .toclevel-2 ul,
.toc-hidelevel4 .toclevel-2 ul,
/* Numbers */
.toc-nonumbers .tocnumber {
display: none;
}
/* Pre-collapse collapsed tables, so there is no page jump when JS kicks in */
.collapsible.collapsed > tr,
.collapsible.collapsed > tbody > tr {
display: none;
}
.collapsible.collapsed > tr:first-child,
.collapsible.collapsed > tbody > tr:first-child {
display: table-row;
}
.collapsible.collapsed > thead + tbody > tr:first-child {
display: none;
}
/* Improve ASIRRA styling */
#asirra_InstructionsTextId {
display: none;
}
#AsirraDiv {
margin-bottom: 10px;
}
/* Turn a list into a tree view style (See [[.minecraft]]) */
.treeview {
margin-top: 0.3em;
}
.treeview ul,
.treeview li {
margin: 0;
padding: 0;
list-style-type: none;
list-style-image: none;
}
.treeview li {
display: table;
}
.treeview li li {
position: relative;
padding-left: 13px;
margin-left: 7px;
border-left: 1px solid #636363;
}
.treeview li li:before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 11px;
height: 11px;
border-bottom: 1px solid #636363;
}
.treeview li li.first:before {
border-color: #636363;
border-style: solid;
border-width: 1px 0 0 1px;
height: 100%;
margin-top: 11px;
width: 10px;
}
.treeview li li.first,
.treeview li li:last-child {
border: 0;
padding-left: 14px;
}
.treeview li li:last-child:before {
border-left: 1px solid #636363;
width: 10px;
}
/* Simulate link styling for JS only links */
.jslink {
color: #0645AD;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
}
.jslink:hover {
text-decoration: underline;
cursor: pointer;
}
.jslink:active {
color: #FAA700;
}
/* Improve styling of sub-categories */
#mw-subcategories ul {
list-style-type: none;
margin-left: 10px;
}
/* Use vector style arrows for enhanced rc instead of those ones from like 2003 */
.mw-enhancedchanges-arrow.mw-collapsible-toggle-expanded {
background-image: url(/extensions/Vector/modules/images/open.svg);
}
.mw-enhancedchanges-arrow.mw-collapsible-toggle-collapsed {
background-image: url(/extensions/Vector/modules/images/closed-ltr.svg);
}
/* Horizontal list */
.hlist ul {
display: inline;
margin: 0;
}
.hlist li {
display: inline-block;
margin: 0;
white-space: nowrap;
}
.hlist li:not(:last-child) {
padding-right: 0.313em;
}
.hlist li:not(:last-child):after {
content: "";
display: inline-block;
position: relative;
left: 0.313em;
bottom: 0.234em;
background-color: #000;
height: 3px;
width: 3px;
}
.hlist li > ul li:first-child:before {
content: "(";
}
.hlist li > ul li:last-child:after {
content: ")";
margin-right: -0.313em;
}
.hlist li li li {
font-size: x-small;
}
/* Generic styling for animation class */
.animated > *:not(.active):not(.skip),
.paused > *:not(.active):not(.skip) {
display: none;
}
/* Generic nowrap class */
.nowrap {
white-space: nowrap;
}
/* Hide noscript only elements */
.noscript {
display: none;
}
/* Cite text needs to be a block element, but should display inline */
.references > li {
white-space: nowrap;
}
div.cite-reference-text {
display: inline;
vertical-align: top;
white-space: normal;
}
/* Add [[File:Mojang logo.svg]] to known MC dev userlinks: [[File:Mojang logo.svg]] */
.mw-userlink[title="User:Jeb"],
.mw-userlink[title="User:Dinnerbone"],
.mw-userlink[title="User:EvilSeph"],
.mw-userlink[title="User:MarcWatson"],
.mw-userlink[title="User:Tahg"],
.mw-userlink[title="User:MrTJP"] {
padding-left: 17px;
background: url(https://hydra-media.cursecdn.com/minecraft.gamepedia.com/thumb/a/ad/Mojang_logo.svg/14px-Mojang_logo.svg.png) no-repeat left center;
}
/* Mark internal links as plain */
#content a.external[href^="https://minecraft.gamepedia.com"] {
background: none;
padding-right: 0;
}
/* Make tabs the correct size */
* {
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
}
/* Remove bullets/numbers from a list */
.list-style-none ul,
.list-style-none ol {
list-style: none;
margin-left: 0;
}
/* Classes corresponding to Minecraft formatting codes */
.format-0 {
color: #000;
text-shadow: 0.125em 0.125em 0 #000;
}
.format-1 {
color: #00A;
text-shadow: 0.125em 0.125em 0 #00002A;
}
.format-2 {
color: #0A0;
text-shadow: 0.125em 0.125em 0 #002A00;
}
.format-3 {
color: #0AA;
text-shadow: 0.125em 0.125em 0 #002A2A;
}
.format-4 {
color: #A00;
text-shadow: 0.125em 0.125em 0 #2A0000;
}
.format-5 {
color: #A0A;
text-shadow: 0.125em 0.125em 0 #A200A2;
}
.format-6 {
color: #FA0;
text-shadow: 0.125em 0.125em 0 #2A2A00;
}
.format-7 {
color: #AAA;
text-shadow: 0.125em 0.125em 0 #2A2A2A;
}
.format-8 {
color: #555;
text-shadow: 0.125em 0.125em 0 #151515;
}
.format-9 {
color: #55F;
text-shadow: 0.125em 0.125em 0 #15153F;
}
.format-a {
color: #5F5;
text-shadow: 0.125em 0.125em 0 #153F15;
}
.format-b {
color: #5FF;
text-shadow: 0.125em 0.125em 0 #153F3F;
}
.format-c {
color: #F55;
text-shadow: 0.125em 0.125em 0 #3F1515;
}
.format-d {
color: #F5F;
text-shadow: 0.125em 0.125em 0 #3F153F;
}
.format-e {
color: #FF5;
text-shadow: 0.125em 0.125em 0 #3F3F15;
}
.format-l {
font-weight: bold;
letter-spacing: 0.125em;
}
.format-m {
text-decoration: line-through;
}
.format-n {
text-decoration: underline;
}
.format-o {
font-style: italic;
}
/* Styling for minecraft style tooltip */
#minetip-tooltip {
position: fixed;
background-color: rgba(16, 0, 16, 0.94);
border-top: 0.125em solid rgba(80, 0, 255, 0.31);
border-bottom: 0.125em solid rgba(40, 0, 127, 0.31);
color: #FFF;
padding: 0.125em 0.25em;
font-family: Minecraft;
font-size: 16px;
white-space: nowrap;
pointer-events: none;
line-height: 1.25em;
text-shadow: 0.125em 0.125em 0 #3F3F3F;
margin: 0.25em 0.375em;
z-index: 100;
}
#minetip-tooltip:before {
content: "";
position: absolute;
top: -0.25em;
right: -0.125em;
bottom: -0.25em;
left: -0.125em;
border: 0.125em solid rgba(16, 0, 16, 0.94);
}
#minetip-tooltip:after {
content: "";
position: absolute;
top: -0.125em;
right: -0.25em;
bottom: -0.125em;
left: -0.25em;
background-image: -webkit-linear-gradient(rgba(80, 0, 255, 0.31), rgba(40, 0, 127, 0.31)), -webkit-linear-gradient(rgba(80, 0, 255, 0.31), rgba(40, 0, 127, 0.31));
background-image: linear-gradient(rgba(80, 0, 255, 0.31), rgba(40, 0, 127, 0.31)), linear-gradient(rgba(80, 0, 255, 0.31), rgba(40, 0, 127, 0.31));
background-size: 0.125em 100%;
background-repeat: no-repeat;
background-position: left, right;
border: solid rgba(16, 0, 16, 0.94);
border-width: 0 0.125em;
}
#minetip-tooltip > .description {
display: block;
margin-top: 0.25em;
}
/* Hide step-by-step publishing as it's broken */
.wikiEditor-ui-buttons {
display: none !important;
}
/* Fix wikiEditor spacing */
#upload_container {
margin-top: -1px;
}
#upload_div {
margin: 0;
width: auto;
border-width: 1px 0;
box-shadow: none;
}
.wikiEditor-ui-top {
border: 0 !important;
}
.wikiEditor-ui-toolbar {
border-bottom: 1px solid silver;
}
/* Fix social icons and promos in portlets */
#mw-panel #p-sitePromos,
#mw-panel #p-socialProfiles {
margin: -11px 9px 10px 11px !important;
}
#mw-panel #p-sitePromos .body,
#mw-panel #p-socialProfiles .body {
margin-left: 0 !important;
padding: 4px 0;
}
#mw-panel .socialSidebar {
text-align: left;
}
#mw-panel .socialLink {
margin: 0 4px 0 0;
}
/* Move the portlets up */
#p-logo {
margin-bottom: 0;
}
/* Fix enhanced RC spacing */
.mw-enhancedchanges-arrow-space {
vertical-align: top;
}
/* Remove on MW1.22: Make notifications fixed, so they're always visible */
#mw-notification-area {
position: fixed;
top: 2.5em;
}
.toc {
min-height: 20px;
padding: 19px;
margin-bottom: 20px;
background-color: #f5f5f5;
border: 1px solid #e3e3e3;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
display: inline-block;
}
.toc ul {
list-style-type: none;
}
/************/
.invslot {
position: relative;
display: inline-block;
background: #8B8B8B no-repeat center center / 32px 32px;
border: 2px solid;
border-color: #373737 #FFF #FFF #373737;
width: 32px;
height: 32px;
font-size: 16px;
line-height: 1;
text-align: left;
vertical-align: bottom
}
.invslot:before,
.invslot:after {
content: "";
position: absolute;
background-color: #8B8B8B;
height: 2px;
width: 2px;
pointer-events: none
}
.invslot:before {
bottom: -2px;
left: -2px
}
.invslot:after {
top: -2px;
right: -2px
}
.invslot-large {
padding: 8px
}
.invslot-item,
.invslot-item > a:first-child {
position: relative;
display: block;
margin: -2px;
padding: 2px
}
.invslot-item-image > a.new:first-child {
background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/4/44/InvSprite.png) no-repeat content-box;
width: 32px;
height: 32px;
text-indent: -9999px;
overflow: hidden
}
.invslot-stacksize {
position: absolute;
right: 0;
bottom: 0;
font-family: Minecraft, sans-serif !important;
font-weight: normal !important;
color: #FFF !important;
text-shadow: 2px 2px 0 #3F3F3F;
filter: dropshadow(color=#3F3F3F, offx=2, offy=2);
z-index: 2
}
.invslot-plain {
background-color: transparent;
border: 0
}
.invslot-plain:before,
.invslot-plain:after {
content: none
}
.invslot-plain > .invslot-item,
.invslot-plain > .invslot-item > a:first-child {
margin: 0;
padding: 0
}
.mcui {
display: inline-block;
position: relative;
background-color: #C6C6C6;
border: 2px solid;
border-color: #DBDBDB #5B5B5B #5B5B5B #DBDBDB;
padding: 6px;
text-align: left;
white-space: nowrap;
vertical-align: bottom
}
.mcui-Crafting_Table > *,
.mcui-Furnace > * {
display: inline-block;
vertical-align: top
}
.mcui-Crafting_Table .mcui-row {
display: block
}
.mcui-Crafting_Table > .mcui-arrow {
background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/8/86/Grid_layout_Arrow_%28small%29.png) no-repeat;
width: 32px;
height: 26px;
margin: 40px 4px 0
}
.mcui-Crafting_Table > .mcui-output {
margin-top: 28px
}
.mcui-Crafting_Table > .mcui-icons {
position: absolute;
top: 6px;
right: 6px
}
.mcui-Crafting_Table .mcui-shapeless,
.mcui-Crafting_Table .mcui-fixed {
display: inline-block;
background-repeat: no-repeat;
width: 19px;
height: 15px;
cursor: help
}
.mcui-Crafting_Table .mcui-shapeless {
background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/a/a9/Grid_layout_Shapeless.png)
}
.mcui-Crafting_Table .mcui-fixed {
background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/b/b8/Grid_layout_Fixed.png)
}
.mcui-Furnace .mcui-fuel {
display: block;
background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/d/d8/Grid_layout_Fire.png) no-repeat;
width: 36px;
height: 36px
}
.mcui-Furnace .mcui-fuel.mcui-inactive {
background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/a/ab/Grid_layout_Fire_%28in-active%29.png)
}
.mcui-Furnace > .mcui-arrow {
background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/8/8e/Grid_layout_Furnace_Progress.png) no-repeat;
width: 44px;
height: 32px;
margin: 36px 18px 0 14px
}
.mcui-Furnace > .mcui-arrow.mcui-inactive {
background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/d/dc/Grid_layout_Furnace_Progress_%28in-active%29.png)
}
.mcui-Furnace > .mcui-output {
margin-top: 28px
}
.mcui-Brewing_Stand > * {
display: block
}
.mcui-Brewing_Stand .invslot {
vertical-align: top
}
.mcui-Brewing_Stand > .mcui-input {
text-align: center
}
.mcui-Brewing_Stand > .mcui-input > .invslot {
margin-top: 3px
}
.mcui-Brewing_Stand .mcui-bubbling,
.mcui-Brewing_Stand .mcui-arrow {
display: inline-block;
background-repeat: no-repeat;
width: 24px;
height: 57px
}
.mcui-Brewing_Stand .mcui-bubbling {
background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/6/65/Grid_layout_Brewing_Bubbles.gif)
}
.mcui-Brewing_Stand > .mcui-input.mcui-inactive > .mcui-bubbling {
background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/d/db/Grid_layout_Brewing_Bubbles_%28In-active%29.png)
}
.mcui-Brewing_Stand .mcui-arrow {
background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/4/4b/Grid_layout_Brewing_Arrow.png)
}
.mcui-Brewing_Stand > .mcui-input.mcui-inactive > .mcui-arrow {
background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/5/59/Grid_layout_Brewing_Arrow_%28In-active%29.png)
}
.mcui-Brewing_Stand > .mcui-paths {
position: relative;
background: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/8/82/Grid_layout_Brewing_Paths.png) no-repeat;
width: 60px;
height: 40px;
margin: -20px auto -16px;
z-index: 1
}
.mcui-Brewing_Stand .mcui-output .invslot {
background-image: url(//hydra-media.cursecdn.com/minecraft.gamepedia.com/5/59/Grid_layout_Brewing_Empty.png)
}
.mcui-Brewing_Stand .mcui-output2 {
margin: 14px 10px 0
}
.mcui-Hotbar {
display: inline-block;
position: relative;
border: 0;
padding: 0;
background-color: transparent
}
.mcui-Hotbar > .mcui-selector {
position: absolute;
top: -2px;
margin-left: -2px
}
.mcui-Hotbar > .mcui-slots {
position: absolute;
top: 0;
left: 0;
margin: 2px
}
.mcui-Hotbar .invslot {
margin: 4px
}
687b5f0c67b6872db6d1a0231fa8a08cb72c09cf
Module:Crafting usage
828
115
181
2024-05-08T20:44:58Z
Axxyyy
2
Created page with "local p = {} local i18n = { emptyCategory = 'Empty crafting usage', moduleCrafting = [[Module:Crafting]], moduleSlot = [[Module:Inventory slot]], queryCategory = 'Recipe using $1', templateCrafting = 'Crafting', } p.i18n = i18n local slot = require( i18n.moduleSlot ) local crafting = require( i18n.moduleCrafting ) local argList = { 'ignoreusage', 'upcoming', 'name', 'ingredients', 'arggroups', 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3',..."
Scribunto
text/plain
local p = {}
local i18n = {
emptyCategory = 'Empty crafting usage',
moduleCrafting = [[Module:Crafting]],
moduleSlot = [[Module:Inventory slot]],
queryCategory = 'Recipe using $1',
templateCrafting = 'Crafting',
}
p.i18n = i18n
local slot = require( i18n.moduleSlot )
local crafting = require( i18n.moduleCrafting )
local argList = {
'ignoreusage', 'upcoming', 'name', 'ingredients', 'arggroups',
1, 2, 3, 4, 5, 6, 7, 8, 9,
'A1', 'B1', 'C1', 'A2', 'B2', 'C2', 'A3', 'B3', 'C3',
'Output', 'description', 'fixed', 'notfixed',
'A1title', 'A1link', 'B1title', 'B1link', 'C1title', 'C1link',
'A2title', 'A2link', 'B2title', 'B2link', 'C2title', 'C2link',
'A3title', 'A3link', 'B3title', 'B3link', 'C3title', 'C3link',
'Otitle', 'Olink',
}
local prefixes = slot.i18n.prefixes
--[[Escapes the parenthesis in ingredient names, and returns the correct
pattern depending on the match type
--]]
local function createIngredientPatterns( ingredients, matchTypes )
local patterns = {}
for i, ingredient in ipairs( ingredients ) do
local escaped = ingredient:gsub( '([()])', '%%%1' )
if not matchTypes then
patterns[i] = '^' .. escaped .. '$'
else
local matchType = matchTypes[i] or matchTypes
if matchType == 'start' then
patterns[i] = '^' .. escaped
elseif matchType == 'end' then
patterns[i] = escaped .. '$'
else
patterns[i] = escaped
end
end
end
return patterns
end
--[[Extracts the anonymous pipe-delimited arguments from the
DPL query into a table with the corresponding keys, skipping
templates with `ignoreusage` set, and skipping duplicate templates
--]]
local extractArgs
do
local seen = {}
extractArgs = function( template )
-- Check for duplicate template or `ignoreusage` arg
if seen[template] or not template:find( '^\n|' ) then
return
end
seen[template] = true
local tArgs = {}
local i = 1
for arg in mw.text.gsplit( template, '\n|' ) do
if arg ~= '' then
tArgs[argList[i]] = arg
end
i = i + 1
end
tArgs.nocat = '1'
return tArgs
end
end
--[[Loops through the crafting args and parses them, with alias reference data
Identical slots reuse the same table, to allow them to be compared like strings
--]]
local function parseCraftingArgs( cArgs )
local parsedFrameText = {}
local parsedCArgs = {}
for arg, frameText in pairs( cArgs ) do
if frameText then
local randomise = arg == 'Output' and 'never' or nil
local frames = not randomise and parsedFrameText[frameText]
if not frames then
frames = slot.parseFrameText( frameText, randomise, true )
parsedFrameText[frameText] = frames
end
parsedCArgs[arg] = frames
end
end
return parsedCArgs
end
-- Loops through the wanted ingredients, and checks if the name contains it
local function containsIngredients( name, ingredientPatterns )
for _, ingredient in pairs( ingredientPatterns ) do
if name:find( ingredient ) then
return true
end
end
return false
end
--[[Loops through the crafting ingredients and find which parameters and
frames contain the wanted ingredients
Returns a table if any matches are found, the table contains tables of
required frame numbers, or true if all of them are required
--]]
local function findRequiredFrameNums( parsedCArgs, ingredientPatterns )
local requiredFrameNums = {}
local hasRequiredFrames
for arg, frames in pairs( parsedCArgs ) do
if arg ~= 'Output' then
local requiredFrames = {}
local count = 0
for i, frame in ipairs( frames ) do
if containsIngredients( frame.name or frame[1].name, ingredientPatterns ) then
requiredFrames[i] = true
count = count + 1
end
end
if count > 0 then
if count == #frames then
return true
end
hasRequiredFrames = true
requiredFrames.count = count
requiredFrameNums[arg] = requiredFrames
end
end
end
return hasRequiredFrames and requiredFrameNums
end
--[[Generates the argument groups, either using the template's specified
groups, or automatically based on the number of frames in each slot
--]]
local function generateArgGroups( predefinedArgGroups, parsedCArgs )
local argGroups = {}
if predefinedArgGroups or '' ~= '' then
local i = 1
for argGroup in mw.text.gsplit( predefinedArgGroups, '%s*;%s*' ) do
local groupData = { args = {} }
for arg in mw.text.gsplit( argGroup, '%s*,%s*' ) do
arg = tonumber( arg ) or arg
if not groupData.count then
groupData.count = #parsedCArgs[arg]
end
groupData.args[arg] = true
end
argGroups[i] = groupData
i = i + 1
end
else
for arg, frames in pairs( parsedCArgs ) do
local framesLen = #frames
if framesLen > 0 then
local groupName = framesLen
local alias = frames.aliasReference and frames.aliasReference[1]
if alias and alias.length == framesLen and
alias.frame.name:find( '^' .. prefixes.any .. ' ' )
then
groupName = alias.frame.name
end
local groupData = argGroups[groupName]
if not groupData then
groupData = {
args = {},
count = framesLen
}
argGroups[groupName] = groupData
end
groupData.args[arg] = true
end
end
end
return argGroups
end
--[[Adds together the required frames from each slot in this group
to get the total amount of frames which are relevant
Returns a table with the relevant frame numbers, if any are relevant
--]]
local function findRelevantFrameNums( requiredFrameNumData, group )
local relevantFrameNums = {}
local hasRelevantFrames
for arg in pairs( group ) do
local requiredFrameNums = requiredFrameNumData[arg]
if requiredFrameNums and arg ~= 'Output' then
for frameNum in pairs( requiredFrameNums ) do
-- Have to use pairs as it contains a non-sequential set of numbers
-- so we have to skip over the extra data in the table
if frameNum ~= 'count' then
hasRelevantFrames = true
relevantFrameNums[frameNum] = true
end
end
relevantFrameNums.count = math.max(
requiredFrameNums.count or 0,
relevantFrameNums.count or 0
)
end
end
return hasRelevantFrames and relevantFrameNums
end
--[[Loops through the relevant frame numbers and extracts them
into a new table, taking care of moving any alias references
and cleaning up any unnecessary subframes
--]]
function p.extractRelevantFrames( relevantFrameNums, frames )
local relevantFrames = { randomise = frames.randomise }
local newFrameNum = 1
for frameNum, frame in ipairs( frames ) do
local relevantFrame = relevantFrameNums == true or relevantFrameNums[frameNum]
if relevantFrame then
if not frame[1] then
local alias = frames.aliasReference and frames.aliasReference[frameNum]
local moveAlias = true
if alias and relevantFrameNums ~= true then
for i = frameNum, alias.length do
if not relevantFrameNums[i] then
moveAlias = false
break
end
end
end
if alias and moveAlias then
if not relevantFrames.aliasReference then
relevantFrames.aliasReference = {}
end
relevantFrames.aliasReference[newFrameNum] = alias
end
end
relevantFrames[newFrameNum] = frame
newFrameNum = newFrameNum + 1
end
end
-- Move frames in subframe to main frames, if the subframe
-- is the only frame
if not relevantFrames[2] and relevantFrames[1][1] then
relevantFrames = relevantFrames[1]
end
return relevantFrames
end
--[[Works out what data is relevant to the requested ingredients
If the template contains any of the ingredients, returns it with any
necessary modifications, and with the crafting arguments parsed
--]]
function p.processTemplate( tArgs, ingredientPatterns )
local cArgs = {}
for i, v in pairs( crafting.cArgVals ) do
cArgs[i] = tArgs[i] or tArgs[v]
end
cArgs.Output = tArgs.Output
local parsedCArgs = parseCraftingArgs( cArgs )
local requiredFrameNumData = findRequiredFrameNums( parsedCArgs, ingredientPatterns )
if not requiredFrameNumData then
return
end
local newCArgs
local modified
if requiredFrameNumData == true then
newCArgs = parsedCArgs
else
local argGroups = generateArgGroups( tArgs.arggroups, parsedCArgs )
newCArgs = {}
for _, groupData in pairs( argGroups ) do
local group = groupData.args
local relevantFrameNums = findRelevantFrameNums( requiredFrameNumData, group )
if not relevantFrameNums then
for arg in pairs( group ) do
newCArgs[arg] = parsedCArgs[arg]
end
else
modified = true
for arg in pairs( group ) do
newCArgs[arg] = p.extractRelevantFrames( relevantFrameNums, parsedCArgs[arg] )
end
end
end
end
-- Convert arguments back to shapeless format if they were originally
if tArgs[1] then
local i = 1
for argNum = 1, 9 do
tArgs[argNum] = nil
local cArg = newCArgs[argNum]
if cArg then
tArgs[i] = cArg
i = i + 1
end
end
else
for i, arg in pairs( crafting.cArgVals ) do
tArgs[arg] = newCArgs[i]
end
end
tArgs.Output = newCArgs.Output
tArgs.parsed = true
-- Let Module:Recipe table generate these
-- with the modified crafting args
if modified then
tArgs.name = nil
tArgs.ingredients = nil
end
return tArgs
end
--[[Works out which frame is the first frame, and returns its
name, or alias name, for sorting purposes
--]]
function p.getFirstFrameName( frames, subframe )
local frame = frames[1]
if not subframe and frame[1] then
return p.getFirstFrameName( frame[1], true )
end
local alias = frames.aliasReference and frames.aliasReference[1]
return alias and alias.frame.name or frame.name
end
--[[Performs the DPL query which retrieves the arguments from the crafting
templates on the pages within the requested categories
--]]
function dplQuery( category, ignore )
test = mw.title.new(category, "Category")
test = test.exists
if test then
return mw.getCurrentFrame():callParserFunction( '#dpl:', {
category = category,
-- nottitleregexp = ignore,
include = '{' .. i18n.templateCrafting .. '}:' .. table.concat( argList, ':' ),
mode = 'userformat',
secseparators = '====',
multisecseparators = '===='
} )
end
return nil
end
--[[The main body, which retrieves the data, and returns the relevant
crafting templates, sorted alphabetically
--]]
function p.dpl( f )
local args = f
if f == mw.getCurrentFrame() then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local ingredients = args[1] and mw.text.split( args[1], '%s*,%s*' ) or { mw.title.getCurrentTitle().text }
local matchTypes = args.match and args.match:find( ',' ) and mw.text.split( args.match, '%s*,%s*' ) or args.match
local ingredientPatterns = createIngredientPatterns( ingredients, matchTypes )
local data
if args.category then
data = dplQuery( args.category, args.ignore )
else
-- DPL has a limit of four categories, so do it in chunks
data = {}
local dataNum = 1
local ingredientCount = #ingredients
local catParts = mw.text.split( i18n.queryCategory, '%$1' )
for i = 1, ingredientCount, 4 do
data[dataNum] = dplQuery(
catParts[1] .. table.concat(
ingredients,
catParts[2] .. '|' .. catParts[1],
i,
math.min( i + 3, ingredientCount )
) .. catParts[2],
args.ignore
)
dataNum = dataNum + 1
end
data = table.concat( data )
end
if data == nil or data == "" then
return "Recipe Category not found"
end
local showDescription
local templates = {}
local i = 1
for templateArgs in mw.text.gsplit( data:sub( 5 ), '====' ) do
local tArgs = extractArgs( templateArgs )
local newArgs = tArgs and p.processTemplate( tArgs, ingredientPatterns )
if newArgs then
if tArgs.description then
showDescription = '1'
end
templates[i] = {
args = newArgs,
sortKey = mw.ustring.lower(
( newArgs.name or p.getFirstFrameName( newArgs.Output ) )
:gsub( '^' .. prefixes.any .. ' ', '' )
:gsub( '^' .. prefixes.matching .. ' ', '' )
:gsub( '^%[%[', '' )
:gsub( '^[^|]+|', '' )
),
}
i = i + 1
end
end
local templateCount = #templates
if templateCount == 0 then
return f:expandTemplate{ title = 'Translation category', args = { i18n.emptyCategory, project = '0' } }
end
table.sort( templates, function( a, b )
return a.sortKey < b.sortKey
end )
local initialArgs = templates[1].args
initialArgs.head = '1'
initialArgs.showname = '1'
initialArgs.showdescription = showDescription
if not args.continue then
templates[templateCount].args.foot = '1'
end
local out = {}
for i, template in ipairs( templates ) do
out[i] = crafting.table( template.args )
end
return table.concat( out, '\n' )
end
return p
30ca6f8b023cec68a4684a72ac3b10ff10371c6d
Template:Crafting usage
10
116
182
2024-05-08T20:46:03Z
Axxyyy
2
Created page with "<includeonly>{{#invoke: Crafting usage | dpl }}</includeonly><noinclude> {{documentation}} <!-- Put categories/interwiki on the documentation page -->"
wikitext
text/x-wiki
<includeonly>{{#invoke: Crafting usage | dpl }}</includeonly><noinclude>
{{documentation}}
<!-- Put categories/interwiki on the documentation page -->
aa63d42e786d6de193e324895ed611ef6fc53c0b
Template:Crafting usage/doc
10
117
183
2024-05-08T20:46:27Z
Axxyyy
2
Created page with "{{lua}} This template automatically populates the "As a crafting ingredient" section of pages by retrieving recipes from other pages which use it as an ingredient. Only pages which are in <code>Category:Recipe using <ingredient></code> ([[:Category:Recipes|category list]]) are searched for recipes. Only recipes using {{tl|crafting}} are used. If no relevant recipes are found, the page will be added to [[:Category:Empty crafting usage]]. == Usage == * <code>{{{1}}}</c..."
wikitext
text/x-wiki
{{lua}}
This template automatically populates the "As a crafting ingredient" section of pages by retrieving recipes from other pages which use it as an ingredient.
Only pages which are in <code>Category:Recipe using <ingredient></code> ([[:Category:Recipes|category list]]) are searched for recipes. Only recipes using {{tl|crafting}} are used.
If no relevant recipes are found, the page will be added to [[:Category:Empty crafting usage]].
== Usage ==
* <code>{{{1}}}</code>: is used to control which category to look through and which ingredient it is looking for, this defaults to the page name. Multiple ingredients can be specified here, separated by commas.
* <code>{{{match}}}</code>: how exact the ingredient match should be, the default being an exact match. Multiple match types can be specified here, separated by commas. If multiple ingredients are specified, but only one match type, then that will be used for all ingredients.
** <code>start</code> means the start of the ingredient has to exactly match. E.g: "Redstone" will match "Redstone Torch", "Redstone Block", "Redstone", etc.; but not "Block of Redstone", "Some Redstone thing", etc.
** <code>end</code> means the end of the ingredient has to exactly match. E.g: "Redstone" will match "Block of Redstone", "Redstone", etc.; but not "Redstone Block", "Some Redstone thing", etc.
** <code>any</code> means the ingredient can be found anywhere within the name. E.g: "Redstone" will match "Block of Redstone, "Redstone", "Redstone Block", "Some Redstone thing", etc.; but not "Red stone", "Block of Reddishstone", etc.
* <code>{{{category}}}</code>: look through a different category from the ingredient name, defaults to <code>Recipe using {{{1}}}</code>
* <code>{{{ignore}}}</code>: a regex string of pages to ignore, without namespace and with spaces replaced with underscores. Pipe characters have to be replaced with <code>¦</code>.
* <code>{{{description}}}</code>: By default, the description is shown automatically if any of the recipes has one, but if this is set to 0, the description column will be forced to not show and if set to 1, it will be forced to show.
* <code>{{{continue}}}</code>: if set, the table will not be ended, allowing additional recipes to be manually added to it. As with normal {{tl|crafting}} usage, the last recipe must have <code>{{{foot}}}</code> set. This is really just a stopgap for if the template somehow misses some recipes, or if coupled with {{{ignore}}} used to manually write a recipe, for greater customisability.
== {{tl|Crafting}} usage ==
These args are used on the {{tl|crafting}} templates themselves, but are read by this template.
* <code>{{{ignoreusage}}}</code>: This can be added to crafting recipes which should be ignored by this template. Best for recipes which need to be ignored by multiple {{tl|crafting usage}} templates.
* <code>{{{arggroups}}}</code>: Used to manually specify which arguments are grouped (see below). Use the arg names (A1, A2, etc.) if the recipe is shaped, or numbers if the recipe is shapeless. Grouped args are separated by commas, and groups are separated by semi-colons. For example: <code>A1,B1,A2;C1,Output</code> would make A1, B1 and A2 a group and C1 and Output a group.
If not all frames of an animation is used, any value set in the <code>name</code> or <code>ingredients</code> arguments will be removed.
== Arg groups ==
In order to correctly understand how the animations in a recipe should be displayed, the template needs to know which arguments are related. For example: in the bed recipe, any wood plank and any wool color can be mixed, and they will all produce the same color bed, thus none of them are related. However in the firework star recipe, the dye and the resulting firework star ''are'' related, but the extra ingredient isn't (any extra ingredient can be used with any color of firework star, but the correct dye has to be used to get the correct firework star).
For animations with different amount of frames, the template knows that they are not grouped, because the animation would get out of sync. However, if they have the same amount of frames, the template assumes they are a group. In cases where this isn't true, {{{arggroups}}} should be used.
{{LoadPage|Template:Crafting usage/doc/example|Example}}
<includeonly>
<!-- Template categories/interwiki here -->
[[Category:Grid templates]]
[[Category:Table templates]]
</includeonly>
<noinclude>
<!-- Documentation categories/interwiki here -->
</noinclude>
b3e0069c31d235665e5ab999e7fdf637f2776d02
Ceramic
0
118
184
2024-05-08T20:46:50Z
Axxyyy
2
Created page with "Ceramic is a basic item in Atomic Technology that is used to make [[Forge Casing]]s and [[Forge Controller]]s. {{Item |image=Ceramic.png |type=Craftable Item |invimage=Ceramic |renewable=Yes |stackable=Yes (64) |availability=Survival |nameid=ceramic }} {{Crafting |Sand |Clay |Output=Ceramic,2 }} == Usage == === As a Crafting Ingredient === {{Crafting usage}}"
wikitext
text/x-wiki
Ceramic is a basic item in Atomic Technology that is used to make [[Forge Casing]]s and [[Forge Controller]]s.
{{Item
|image=Ceramic.png
|type=Craftable Item
|invimage=Ceramic
|renewable=Yes
|stackable=Yes (64)
|availability=Survival
|nameid=ceramic
}}
{{Crafting
|Sand
|Clay
|Output=Ceramic,2
}}
== Usage ==
=== As a Crafting Ingredient ===
{{Crafting usage}}
3a7aad635355cb911eb11b99b49be6c316feb4c8
189
184
2024-05-09T20:15:40Z
Axxyyy
2
wikitext
text/x-wiki
Ceramic is a basic item in Atomic Technology that is used to make [[Forge Casing]]s and [[Forge Controller]]s.
{{Item
|image=Ceramic.png
|type=Craftable Item
|invimage=Ceramic
|renewable=Yes
|stackable=Yes (64)
|availability=Survival
|nameid=ceramic
}}
== Obtaining ==
=== Crafting ===
{{Crafting
|Sand
|Clay
|Output=Ceramic,2
}}
== Usage ==
=== As a Crafting Ingredient ===
{{Crafting usage|Ceramic}}
0c5aef0ef1d0a94df372a7a5d23eed3828c57f5f
File:Grid Forge Casing.png
6
119
185
2024-05-09T17:35:11Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Forge Casing.png
6
120
186
2024-05-09T17:37:55Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Forge Casing
0
121
187
2024-05-09T17:42:15Z
Axxyyy
2
Created page with "Forge Casings are used with [[Forge Controller]]s to make a [[Forge]]. {{Item |image=Forge_Casing.png |type=Craftable Item |invimage=Forge_Casing |renewable=Yes |stackable=Yes (64) |availability=Survival |nameid=forge_casing }} {{Crafting |B1=Ceramic |B2=Ceramic |C1=Ceramic|C2=Ceramic |Output=Forge_Casing }}"
wikitext
text/x-wiki
Forge Casings are used with [[Forge Controller]]s to make a [[Forge]].
{{Item
|image=Forge_Casing.png
|type=Craftable Item
|invimage=Forge_Casing
|renewable=Yes
|stackable=Yes (64)
|availability=Survival
|nameid=forge_casing
}}
{{Crafting
|B1=Ceramic |B2=Ceramic
|C1=Ceramic|C2=Ceramic
|Output=Forge_Casing
}}
0cf9d6e97a9959259a12fb6cfd764a6db100cbf2
188
187
2024-05-09T17:50:06Z
Axxyyy
2
wikitext
text/x-wiki
Forge Casings are used with [[Forge Controller]]s to make a [[Forge]].
{{Item
|image=Forge_Casing.png
|type=Craftable Item
|invimage=Forge_Casing
|renewable=Yes
|stackable=Yes (64)
|availability=Survival
|nameid=forge_casing
}}
== Obtaining ==
=== Crafting ===
{{Crafting
|B1=Ceramic |B2=Ceramic
|C1=Ceramic|C2=Ceramic
|Output=Forge_Casing
}}
d3d8670d52438dab3bd9fe635abea4970b36228c
190
188
2024-05-09T20:54:20Z
Axxyyy
2
wikitext
text/x-wiki
Forge Casings are used with a [[Forge Controller]] to make a [[Forge]].
{{Item
|image=Forge_Casing.png
|type=Craftable Item
|invimage=Forge_Casing
|renewable=Yes
|stackable=Yes (64)
|availability=Survival
|nameid=forge_casing
}}
== Obtaining ==
=== Crafting ===
{{Crafting
|B1=Ceramic |B2=Ceramic
|C1=Ceramic|C2=Ceramic
|Output=Forge_Casing
}}
964ca9742763e4c5bd8c1d4223c357b00cc739fb
File:Grid Forge Controller.png
6
122
191
2024-05-09T22:01:17Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
File:Forge Controller.png
6
123
192
2024-05-09T22:08:02Z
Axxyyy
2
wikitext
text/x-wiki
da39a3ee5e6b4b0d3255bfef95601890afd80709
Template:Grid/Crafting table
10
124
193
2024-05-10T01:07:45Z
Axxyyy
2
Created page with "<includeonly>{{#invoke:grid|craftingTable}}</includeonly> <noinclude> {{/doc}} </noinclude>"
wikitext
text/x-wiki
<includeonly>{{#invoke:grid|craftingTable}}</includeonly>
<noinclude>
{{/doc}}
</noinclude>
540ec2d363d68f6b5dcce0e04f9d9435ea61be8e
Template:Grid/Crafting table/doc
10
125
194
2024-05-10T01:10:19Z
Axxyyy
2
Created page with "{{doc/start}} {{lua|Grid}} This template is used to create a grid that looks similar to the [[Crafting Table|Crafting Table's]] GUI screen. See [[Template:Grid]] for basic grid usage, this documentation page will cover additional or different functions. Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead. __TOC__ == Usage == <pre style="max-width: 250px">{{Grid/Crafting Table |A1= |B1=..."
wikitext
text/x-wiki
{{doc/start}}
{{lua|Grid}}
This template is used to create a grid that looks similar to the [[Crafting Table|Crafting Table's]] GUI screen.
See [[Template:Grid]] for basic grid usage, this documentation page will cover additional or different functions.
Most of the time, such as when creating the list of crafting recipes on an item's article, {{tl|Crafting}} can be used instead.
__TOC__
== Usage ==
<pre style="max-width: 250px">{{Grid/Crafting Table
|A1= |B1= |C1=
|A2= |B2= Oak Wood Planks |C2=
|A3= |B3= Oak Wood Planks |C3=
|Output= Stick,4
}}</pre>
;produces:
{{Grid/Crafting Table
|A1= |B1= |C1=
|A2= |B2= Oak Wood Planks |C2=
|A3= |B3= Oak Wood Planks |C3=
|Output= Stick,4
}}
Use the [[#Available images|available images]] listed below.
=== Shapeless ===
If a recipe is shapeless, add shapeless=1 to the template, which will display an icon which when hovered over explains what a shapeless recipe is.
<pre style="max-width: 236px">{{Grid/Crafting Table
|shapeless= 1
|A1= |B1= Blaze Powder |C1=
|A2= |B2= Coal,Charcoal |C2=
|A3= |B3= Gunpowder |C3=
|Output= Fire Charge,3
}}</pre>
;produces:
{{Grid/Crafting Table
|shapeless= 1
|A1= |B1= Blaze Powder |C1=
|A2= |B2= Coal,Charcoal |C2=
|A3= |B3= Gunpowder |C3=
|Output= Fire Charge,3
}}
The shapeless parameter does not support animation, so shapeless and non-shapeless recipes cannot be combined.
=== Animated ===
To make the grid animate, you make a list of blocks and objects you want to show, separated by semi-colons.
<pre style="max-width: 616px">{{Grid/Crafting Table
|A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli
|A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli
|A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli
|Output= Lapis Lazuli,9; Lapis Lazuli Block
}}</pre>
;produces:
{{Grid/Crafting Table
|A1= ; Lapis Lazuli |B1= ; Lapis Lazuli |C1= ; Lapis Lazuli
|A2= ; Lapis Lazuli |B2= Lapis Lazuli Block; Lapis Lazuli |C2= ; Lapis Lazuli
|A3= ; Lapis Lazuli |B3= ; Lapis Lazuli |C3= ; Lapis Lazuli
|Output= Lapis Lazuli,9; Lapis Lazuli Block
}}
<pre style="max-width: 602px">{{Grid/Crafting Table
|A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block
}}</pre>
;produces:
{{Grid/Crafting Table
|A1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C1= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|A2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C2= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|A3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|B3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|C3= Iron Ingot; Gold Ingot; Diamond; Lapis Lazuli
|Output= Block of Iron; Block of Gold; Block of Diamond; Lapis Lazuli Block
}}
=== Mods ===
Mod images and normal images can be combined just like in a single grid.
When uploading mod images, they must have the mod page name in parenthesis at the end. For example Fancystone (FancyPack).
The Mod parameter can be used to set a default used for all parameters, this is best used when all items in the crafting table are modded items, or if the mod name is long and using the vanilla (v) parameter for the vanilla items in the table would be quicker.
<pre style="max-width: 848px">{{Grid/Crafting Table
|A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust
|A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit
|A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone
|Output= IndustrialCraft:Advanced Circuit,2
}}</pre>
;or
<pre style="max-width: 656px">{{Grid/Crafting Table
|Mod= IndustrialCraft
|A1= v:Redstone Dust |B1= Cable |C1= vanilla:Glowstone Dust
|A2= Electronic Circuit |B2= V:Lapis Lazuli Block |C2= Electronic Circuit
|A3= Vanilla:Glowstone Dust |B3= Cable |C3= v:Redstone Dust
|Output= Advanced Circuit,2
}}</pre>
;produces:
{{Grid/Crafting Table
|A1= Redstone |B1= IndustrialCraft:Cable |C1= Glowstone Dust
|A2= IndustrialCraft:Electronic Circuit |B2= Lapis Lazuli Block |C2= IndustrialCraft:Electronic Circuit
|A3= Glowstone Dust |B3= IndustrialCraft:Cable |C3= Redstone
|Output= IndustrialCraft:Advanced Circuit,2
}}
Note the links of the vanilla Minecraft items, compared to the IndustrialCraft items.
Animation is fully supported between mod and vanilla items.
{{doc/end}}
b3936ff1d5459ba3db101fc8e041d39b72e78471